GWL*_*osa 14 .net c# data-binding wpf user-interface
我有一系列控件,它们数据绑定到每秒钟左右变化的值.有时,我需要"暂停"控件,这样他们就不会更新数据绑定(在任何一个方向上).然后,我需要"取消暂停"控件,以便他们可以使用其值更新数据源,并正常接收来自源的未来更新.我该如何做到这一点?
样本绑定:
<TextBox Text="{Binding UpdateSourceTrigger=LostFocus, Mode=TwoWay, Path=myData}">
Run Code Online (Sandbox Code Playgroud)
Rob*_*ney 12
您不一定要暂停绑定.另一种可能更简单的方法是在视图模型中暂停更改通知.例如:
private HashSet<string> _ChangedProperties = new HashSet<string>();
private void OnPropertyChanged(string propertyName)
{
if (_Suspended)
{
_ChangedProperties.Add(propertyName);
}
else
{
PropertyChangedEventHandler h = PropertyChanged;
if (h != null)
{
h(this, new PropertyChangedEventArgs(propertyName));
}
}
}
private bool _Suspended;
public bool Suspended
{
get { return _Suspended; }
set
{
if (_Suspended == value)
{
return;
}
_Suspended = value;
if (!_Suspended)
{
foreach (string propertyName in _ChangedProperties)
{
OnPropertyChanged(propertyName);
}
_ChangedProperties.Clear();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这将(如果它已经过调试和测试,我还没有完成)PropertyChanged在Suspended设置为时停止引发事件true,并且当Suspended设置为false再次时,它将为暂停时更改的每个属性引发事件.
这不会阻止更改绑定控件以更新视图模型.我向你提交,如果你让用户在屏幕上编辑属性,同时你在后台更改它们,那么你需要仔细查看一些内容,而且它不具有约束力.
| 归档时间: |
|
| 查看次数: |
7880 次 |
| 最近记录: |