我有一個LightSwitch屏幕,它由包含CustomControl的List組成。這個CustomControl有一組依賴屬性,通過TwoWay綁定綁定到實體上的屬性。將TwoWay綁定更改爲PropertyChanged回調中的綁定項目
在CustomControl上的依賴項屬性之一我有一個PropertyChangedCallback在LightSwitch頁面上執行一個方法。然後在列表綁定的項目集合上運行一些計算。
大多數情況下這很好,但是在某些情況下,計算在觸發它們的變化被推送到CustomControl上的TwoWay綁定的實體之前運行。我該如何解決這個問題?我需要確保在對TwoControl綁定中的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
}
對不起,我不認爲你理解我的問題。我有兩個對象,每個都有一個屬性。對象A上的屬性1與TwoWay綁定到對象B上的屬性2綁定。當對象B上的屬性2發生更改時,PropertyChangedCallback會執行對象A上執行某些計算的方法,但此時屬性1可能有或沒有已更新對屬性2所做的更改。清除? :) – 2012-07-10 09:36:51
當對象的屬性1被對象B的屬性2的兩種方式綁定時,它將會改變一次Property2被對象B改變。請問你有什麼問題我不認爲我已經理解你卡在哪裏了? – vinod8812 2012-07-12 07:28:13
問題是在更新對象B的屬性2時,對象A *的屬性1未更新*在PropertyChangedCallback運行時。在回調中,我使用LightSwitch所需的Dispatcher,這會導致競爭條件,有時財產已更新,有時不會。我在問是否有辦法強制通過對象A的更新。 – 2012-07-12 10:27:22