2017-06-07 94 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的信息瞭解有關此行爲的更多信息。

相關問題