2017-06-07 66 views
0

我试图使复选框绑定到我的ViewModel类的子类(没有太多运气)。如何将IsChecked绑定到ViewModel子类

在我的ViewModel类...

public class TestClass 
{ 
    private bool _TestValue; 
    public bool TestValue 
    { 
     get { return _TestValue; } 
     set 
     { 
     _TestValue = value; 
     System.Windows.MessageBox.Show("TestValue = " + _TestValue); 
     } 
    } 
} 
public TestClass TC; 

在我的视图模型构造...

TC = new TestClass(); 
TC.TestValue = false; 

在我看来......

<CheckBox IsChecked="{Binding Path=TC.TestValue, Mode=TwoWay}">Option 1</CheckBox> 

我的期望是,当我切换复选框,我应该看到弹出的窗口说“TestValue = True”或“TestValue = False”,但是这不会发生。我错过了什么?

+1

这不是推荐的方法来实现这样的事情。您应该将'INotifyPropertyChanged'实现为'TestClass',然后在ViewModel中处理该事件。 引发MessageBox的代码将在此处理程序中 –

+0

正如@AgustinMeriles所说,实现'INotifyPropertyChanged'接口。查找适当的mvvm教程。网上有吨。你只需要对现有的'TestClass'进行细微的修改。 Btw AFAIK,'System.Windows.MessageBox'在WPF中不起作用。我记得我们曾经为此实现了我们自己的对话框控件。 –

+0

@Ephraim你是什么意思'System.Windows.MessageBox'在WPF中不起作用?它工作正常,我曾多次用于测试目的。 – Maxim

回答

2

将您的TC公共字段转换为属性,您的绑定将起作用。

public TestClass TC { get; } 

您可以从this的信息了解有关此行为的更多信息。

相关问题