I find working with radiobuttons in WPF/MVVM as a slightly annoying experience. The "go-to" answer for removing annoyances in WPF is looking for a solution in Caliburn.Micro or one of the recipes or example implementations like CoProject. But I can can not find any implementation of a convention for radiobutton. And trying to make my own I realize how hard it is to make this feel natural and intuitive.
Does anyone know of a good implementation of this convention?
I think So,This is use full to You:-
<UserControl x:Class="CaliburnMicroTest.Views.RadioButtonTestView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
d:DesignHeight="300"
d:DesignWidth="300"
mc:Ignorable="d">
<StackPanel>
<RadioButton Name="NewInstallChecked"
Margin="75,10,0,0"
Content="New Installation (default)"
GroupName="InstallType" />
<RadioButton Name="UpdateInstallChecked"
Margin="75,10,0,0"
Content="Update of existing Installation"
GroupName="InstallType" />
<Label Name="label2"
Height="28"
Margin="20,20,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Content="Please select which version of Siseco you want to install:" />
<RadioButton Name="ServerChecked"
Margin="75,10,0,0"
Content="Server version (default)"
GroupName="Version" />
<RadioButton Name="ClientChecked"
Margin="75,10,0,0"
Content="Client version"
GroupName="Version" />
<StackPanel Margin="10" Orientation="Horizontal">
<Button Name="SaveAndClose"
Width="80"
Content="Ok" />
<Button Name="TryClose"
Width="80"
Content="Cancel" />
</StackPanel>
</StackPanel></UserControl>
public class RadioButtonTestViewModel : Screen
{
private bool newInstallChecked;
private bool updateInstallChecked;
private bool serverChecked;
private bool clientChecked;
public bool NewInstallChecked
{
get { return newInstallChecked; }
set
{
if (value.Equals(newInstallChecked)) return;
newInstallChecked = value;
NotifyOfPropertyChange(() => NewInstallChecked);
}
}
public bool UpdateInstallChecked
{
get { return updateInstallChecked; }
set
{
if (value.Equals(updateInstallChecked)) return;
updateInstallChecked = value;
NotifyOfPropertyChange(() => UpdateInstallChecked);
}
}
public bool ServerChecked
{
get { return serverChecked; }
set
{
if (value.Equals(serverChecked)) return;
serverChecked = value;
NotifyOfPropertyChange(() => ServerChecked);
}
}
public bool ClientChecked
{
get { return clientChecked; }
set
{
if (value.Equals(clientChecked)) return;
clientChecked = value;
NotifyOfPropertyChange(() => ClientChecked);
}
}
public void SaveAndClose()
{
Options.Client = ClientChecked;
Options.NewInstall = NewInstallChecked;
Options.Server = ServerChecked;
Options.UpdateInstall = UpdateInstallChecked;
TryClose();
}
protected override void OnInitialize()
{
base.OnInitialize();
ClientChecked = Options.Client;
NewInstallChecked = Options.NewInstall;
ServerChecked = Options.Server;
UpdateInstallChecked = Options.UpdateInstall;
}
public static class Options
{
public static bool NewInstall { get; set; }
public static bool UpdateInstall { get; set; }
public static bool Server { get; set; }
public static bool Client { get; set; }
}}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With