2009-09-11 58 views
2

我有一個帶切換按鈕的控件模板。這個ToggleButton擁有它的IsChecked屬性,一種方式綁定到一個依賴屬性。如果我顯式設置依賴屬性綁定工作。爲什麼我得到不一致的綁定結果

問題是我與UI中的切換按鈕交互,如果我顯式設置依賴項屬性,綁定不會更新IsChecked屬性。

我確實有一個使用TwoWay綁定的工作環境,它工作正常。我的問題是,爲什麼它會這樣呢?我錯過了什麼嗎? Silverlight的綁定機制中存在一個錯誤嗎?

編輯附上代碼段:

在ControlTemplate中的結合看起來像(可以用TemplateBinding代替)

<ToggleButton x:Name="PlayPause" Grid.Column="0" 
       IsChecked="{Binding Paused, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" 
       HorizontalAlignment="Center" 
       Width="50" Height="50"/> 

依賴屬性的顯式設置是相當沼澤標準:

myComponent.Paused = true; 
+0

它會幫助,如果你可以發佈一個小的代碼示例演示了問題。 –

回答

2

WPF刪除單向綁定當目標屬性(在這種情況下,器isChecked)被修改。當IsChecked被修改時,Silverlight用於保持綁定。如果稍後設置了Paused,則此值也會覆蓋IsChecked。

根據你,好像Silverlight的復歸WPF行爲。好吧。就我個人而言,我考慮修改一個綁定屬性的bug。如果這些屬性不是同步命令可能是更好的解決方案。

1
  1. 呦ü應採用雙向綁定
  2. 確保包含您的暫停屬性的對象支持INotifyPropertyChanged的。
  3. 確保已暫停的setter觸發PropertyChanged事件
相關問題