2012-06-16 125 views
2

我想將字符串值綁定到文本框,但僅限於選中複選框。所以,如果複選框被選中,我希望文本框顯示消息1,如果不是則顯示消息2.MVVM - 如果選中複選框,則綁定到複選框

這樣做的最佳方法是什麼?它是更好地在我的對象使用一個列表屬性,然後根據是否複選框被選中或不取決於該項目從我的名單<>顯示

是更好地只更新中該對象的屬性(此時的字符串類型)複選框被選中後,然後重新綁定?

回答

11

以下是一種假定您瞭解INotifyPropertyChanged(您需要!)的MVVM類型的方法。隨意玩,隨時詢問你遇到的任何事情。

VM(視圖模型代碼)

public class MyViewModel : INotifyPropertyChanged { 

    const string Msg1 = "blah 1"; 
    const string Msg2 = "blah 2"; 

    private bool _isSelected; 
    public bool IsSelected{ 
     get { return _isSelected; } 
     set { 
      if(_isSelected == value) return; 

      _isSelected = value; 
      MyBoundMessage = _isSelected ? Msg1 : Msg2; 

      NotifyPropertyChanged(()=> IsSelected); 
      NotifyPropertyChanged(()=> MyBoundMessage); 
     } 
    } 

    public string MyBoundMessage {get;set;} 
} 

V(查看XAML)

<CheckBox IsChecked="{Binding IsSelected}" /> 
<TextBox Text="{Binding MyBoundMessage}" /> 
+1

謝謝。這很棒。對不起,我的回覆延遲了。 – Dave

+1

只是想指出複選框沒有屬性「IsSelected」,你應該設置屬性「IsChecked」。另外,請確保將屬性值包含在引號中。 – OrahSoft

+3

OrahSoft,你需要了解DataBinding - 該對象的名稱是不可剝奪的 – MyDaftQuestions