0
嗨我正在开发mvvm wpf应用程序,我的问题是当用户选择组合框中的某个项目时我向用户提问是/否,如果用户选择否我想重置价值先前选定的项目..我可以重置它和它的值得到更新..但问题是我设置的旧值是属性更改事件,它不会在UI中更新(因为我正在做它内部属性改变了,我猜)。有没有任何解决办法或解决方案。如何禁用或重置其属性内的值已更改
嗨我正在开发mvvm wpf应用程序,我的问题是当用户选择组合框中的某个项目时我向用户提问是/否,如果用户选择否我想重置价值先前选定的项目..我可以重置它和它的值得到更新..但问题是我设置的旧值是属性更改事件,它不会在UI中更新(因为我正在做它内部属性改变了,我猜)。有没有任何解决办法或解决方案。如何禁用或重置其属性内的值已更改
确保您的虚拟机实施INotifyPropertyChanged,然后确保您重置的旧值的属性在值更改时发送通知。然后绑定将负责更新绑定控件。
public class ViewModel : INotifyPropertyChanged
{
public object PropertyToReset
{
get { return _propertyToReset; }
set
{
if (_propertyToReset == value) { return; }
// capture the old value in case the user decides not to change the value
_oldPropertyToResetValue = _propertyToReset;
_propertyToReset = value;
NotifyPropertyChanged("PropertyToReset");
}
}
public bool IsPropertyChanging
{
get { _isPropertyChanging; }
set
{
if (_isPropertyChanging == value) { return; }
_isPropertyChanging = value;
NotifyPropertyChanged("IsPropertyChanging");
if (value == false) { PropertyToReset = _oldPropertyToResetValue; }
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}