0

我有一个 LightSwitch 屏幕,它由一个包含 CustomControl 的列表组成。此 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
    }
4

1 回答 1

0

如果属性有任何变化,您可以检查 propertychangedcall back 方法,然后只执行您的计算代码。否则删除 propertychangedcallback 并将您的代码放入 Property 的设置器中。

干杯! 维诺德

于 2012-07-09T18:17:41.730 回答