对于exmaple,我有2个TextBlock UI。
下面的当前代码是两个窗口都会得到名称 每当调用INotifyPropertyChanged时。
例如,I window 2将更新名称但是 调用INotifyPropertyChanged时,我不希望窗口1更新。
窗口1
<TextBlock Text="{binding Name}"/>
窗口2
<TextBlock Text="{binding Name}"/>
查看模型
class UserViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
private string m_Name = "John";
public string Name
{
get { return m_Name; }
set
{
if (value != Name)
{
m_Name = value;
OnPropertyChanged("Name");
}
}
}
}
答案 0 :(得分:1)
将绑定模式的一次性设置添加到您不想更新的设置。
{Binding Name, Mode=OneTime}
答案 1 :(得分:0)
您无法在特定时间停止由INotifyPropertyChanged
界面更新UI控件。但是,您只需添加另一个属性即可绑定到Window
1,并从原始属性中获取此值。然后,您可以添加bool
属性,以启用或禁用新属性的更新。尝试这样的事情:
public string SecondNameProperty
{
get
{
if (CanUpdate) secondNameProperty = Name;
return secondNameProperty;
}
}
如果要更新SecondNameProperty
属性,只需确保CanUpdate
属性设置为true
,当您不希望更新时,请将其设置为{ {1}}。