Xaml 单选按钮不显示为“按钮”;勾选“;当绑定值为true时
在我的项目中,我在构建ViewModel时将bool属性设置为true 在视图中,我有一个单选按钮,它绑定到此属性的值。我第一次打开视图时,单选按钮已“选中”(完美,正是我想要的!) 但是,如果关闭然后重新打开视图,则RadioButton不会“选中”,尽管绑定属性的值为“true”。在我的构造函数中,我将'scatteredMode'设置为true,但是setter被调用了三次(第一次,value=true;第二次,value=false;第三次,value=true) 任何帮助都将不胜感激 XAML:Xaml 单选按钮不显示为“按钮”;勾选“;当绑定值为true时,xaml,mvvm,Xaml,Mvvm,在我的项目中,我在构建ViewModel时将bool属性设置为true 在视图中,我有一个单选按钮,它绑定到此属性的值。我第一次打开视图时,单选按钮已“选中”(完美,正是我想要的!) 但是,如果关闭然后重新打开视图,则RadioButton不会“选中”,尽管绑定属性的值为“true”。在我的构造函数中,我将'scatteredMode'设置为true,但是setter被调用了三次(第一次,value=true;第二次,value=false;第三次,value=true) 任何帮助都将不胜感激
您的
交错模式
属性应该是可观察的,以便可以从视图模型
通知视图有关属性更改的信息
您可以自己实现,也可以使用现有的实现之一,如、或
以下是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);
}
}
}
然后从ObserveObject派生ViewModel,并在每次更改属性值时引发OnPropertyChanged事件:
public class MyViewModel : ObservableObject
{
...
private bool staggeredMode;
public bool StaggeredMode
{
get { return staggeredMode; }
set
{
staggeredMode = value;
OnPropertyChanged("StaggeredMode");
}
}
...
}
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);
}
}
}
public class MyViewModel : ObservableObject
{
...
private bool staggeredMode;
public bool StaggeredMode
{
get { return staggeredMode; }
set
{
staggeredMode = value;
OnPropertyChanged("StaggeredMode");
}
}
...
}