在我的项目中,我在构造ViewModel时将bool属性设置为true。
在View中,我有一个RadioButton,它绑定到这个属性的值。第一次打开View时,RadioButton被“检查”(完美,正是我想要的!)。
但是,如果我关闭然后重新打开View,则不会“检查”RadioButton,尽管绑定属性的值为“true”。在我的构造函数中,我将'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 :(得分:0)
您的StaggeredMode
属性应该是可观察的,以便可以通过ViewModel
通知视图有关属性的更改。
您可以自己实施INotifyPropertyChanged
或使用现有的实施方式,如this,this或this。
以下是INotifyPropertyChanged
interface的基本实现:
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派生ViewModel,并在每次更改属性值时引发OnPropertyChanged事件:
public class MyViewModel : ObservableObject
{
...
private bool staggeredMode;
public bool StaggeredMode
{
get { return staggeredMode; }
set
{
staggeredMode = value;
OnPropertyChanged("StaggeredMode");
}
}
...
}