我有一个LightSwitch屏幕,它包含一个包含CustomControl的List。此CustomControl具有一组依赖项属性,这些属性通过TwoWay绑定绑定到实体上的属性。
在CustomControl上的一个依赖项属性上,我有一个PropertyChangedCallback,它在LightSwitch页面上执行一个方法。然后,它会在列表绑定的项集合中运行一些计算。
大多数时候这很好,但是在某些情况下,似乎在触发它们的更改从CustomControl上的TwoWay绑定推送到实体之前运行计算。我该如何解决这个问题?我需要确保在从TwoWay绑定推送到CustomControl依赖项属性的更改后运行LightSwitch页面中的代码。
通过以下方式在CustomControl上创建绑定:
SetBinding(AxleNumberProperty, new Binding("Value.Number") { Mode = BindingMode.TwoWay });
依赖属性如下所示:
public static readonly DependencyProperty AxleNumberProperty =
DependencyProperty.Register("AxleNumber", typeof(int), typeof(AxleViewer), new PropertyMetadata((d, e) => ((AxleViewer)d).RecalculateSquare()));
我对依赖属性的回调如下:
private void RecalculateSquare()
{
IContentItem contentItem = (IContentItem)DataContext;
IScreenDetails screenDetails = contentItem.Screen.Details;
screenDetails.Dispatcher.BeginInvoke(() => screenDetails.Commands["UpdateSquare"].Execute());
}
然后在屏幕上我有:
partial void UpdateSquare_Execute()
{
// perform calculation on this.Axles
}
答案 0 :(得分:0)
如果属性有任何变化,您可以检查propertychangedcall back方法,然后只执行您的计算代码。否则删除propertychangedcallback并将您的代码放在Property的设置器中。
干杯! 维诺德