I have a few checkboxes where the UI will change based on their status. In the code I send a message everytime the checkbox is click, everything works fine but I'm not sure if this is the most effective way to handle CheckBoxes. Sorry but I'm new to the whole WPF/MVVM.
Here is how I'm doing it...
XAML:
<Grid x:Name="LayoutRoot">
<CheckBox x:Name="checkBox" Command="{Binding CheckBoxCommand}" Content="My Check Box"/>
</Grid>
ViewModel:
namespace MvvmLightCheckBoxes.ViewModel
{
public class MainViewModel : ViewModelBase
{
public RelayCommand CheckBoxCommand { get; set; }
private Boolean _isCheckBoxChecked = true;
public MainViewModel(IDataService dataService)
{
CheckBoxCommand = new RelayCommand(() => checkBoxClick());
}
private void checkBoxClick()
{
if (_isCheckBoxChecked) {
Messenger.Default.Send(new MessageFromMain { isBoxChecked = _isCheckBoxChecked });
_isCheckBoxChecked = false;
}else {
Messenger.Default.Send(new MessageFromMain { isBoxChecked = _isCheckBoxChecked });
_isCheckBoxChecked = true;
}
}
}
}
Codebihind:
namespace MvvmLightCheckBoxes
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Messenger.Default.Register<MessageFromMain>(this, m => ReceivedMessageFromMain(m));
}
private void ReceivedMessageFromMain(MessageFromMain m)
{
if (m.isBoxChecked) {
Console.WriteLine("Box is checked");
}
else {
Console.WriteLine("Box is unchecked");
}
}
}
}
Model:
namespace MvvmLightCheckBoxes.Model
{
class MessageFromMain
{
public Boolean isBoxChecked { set; get; }
}
}
Is this an acceptable way to handle checkBoxes when using MVVM?