2017-07-26 49 views
0

在我的項目中,我構建了一個bool屬性,當構造ViewModel時爲true。當綁定值爲真時,RadioButton不顯示爲「Checked」

在視圖中,我有一個綁定到此屬性值的RadioButton。第一次打開視圖時,RadioButton被「檢查」(完美,正是我想要的!)。

但是,如果關閉然後重新打開視圖,即使綁定屬性的值爲'true',RadioButton也不會被「檢查」。在我的構造函數中,我將「StaggeredMode」設置爲true,但setter被稱爲三次(首先,value = true;其次,value = false;第三,value = true)

任何幫助將不勝感激!

XAML:

<RadioButton GroupName="AppointmentStart" 
      Content="Staggered" 
      IsChecked="{Binding StaggeredMode, Mode=TwoWay}" 
      VerticalAlignment="Top" 
      HorizontalAlignment="Left" 
      Margin="310,247,0,0" /> 

C#:

private bool staggeredMode; 
public bool StaggeredMode 
{ 
    get { return staggeredMode; } 
    set { staggeredMode = value; } 
} 

回答

0

StaggeredMode屬性應該是觀察到這樣的觀點,可以通知有關從ViewModel屬性更改。

你可以自己實現INotifyPropertyChanged或使用現有實現的一個像thisthisthis

這是一個基本的實現INotifyPropertyChanged接口:

public abstract class ObservableObject : INotifyPropertyChanged 
{ 
    public virtual void RaisePropertyChanged(string propertyName) 
    { 
     OnPropertyChanged(propertyName); 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 
    protected virtual void OnPropertyChanged(string propertyName) 
    { 
     PropertyChangedEventHandler handler = this.PropertyChanged; 
     if (handler != null) 
     { 
      var e = new PropertyChangedEventArgs(propertyName); 
      handler(this, e); 
     } 
    } 
} 

然後你從ObservableObject派生您的視圖模型和每一個你的財產值已更改時間提高OnPropertyChanged事件:

public class MyViewModel : ObservableObject 
{ 
    ... 
    private bool staggeredMode; 
    public bool StaggeredMode 
    { 
     get { return staggeredMode; } 
     set 
     { 
      staggeredMode = value; 
      OnPropertyChanged("StaggeredMode"); 
     } 
    } 
    ... 
} 
相關問題