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));
}
}
}