将TwoWay绑定更改从PropertyChanged回调推送到绑定项

时间:2012-07-09 11:33:58

标签: silverlight visual-studio-lightswitch visual-studio-2012

我有一个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
    }

1 个答案:

答案 0 :(得分:0)

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

干杯! 维诺德