2010-08-05 20 views
3

今天我遇到了一個問題,它讓我想起綁定在某些情況下會自動分離。我不知道,但這裏的情景 -自動分離綁定的案例

我附上綁定到屬性菜單項(實施INotifyPropertyChanged),這樣的 -

IsChecked="{Binding Path=DisplayLongUnit, Mode=TwoWay}" 

現在,在其檢查事件處理程序我再更新IsChecked值檢查一些這樣的條件 -

If(condition == true){menuItem.IsChecked = true} 

現在將綁定仍然連接或它會丟失? (我記得在某處它會丟失)。

是否有任何情況下綁定將被自動分離?

一個我能找到這裏提到的 -

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/08d6e4c4-47ab-44f3-b19a-c0ab872fb1a8

回答

0

您已經嘗試了雙向綁定?你的問題是什麼

IsChecked="{Binding Path=DisplayLongUnit, Mode=TwoWay}" 
0

更具體的例子是在這裏:
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/4165daed-2eaf-450b-a082-63d79ff9fd3e

你可能想使結合模式雙向(這樣你的財產也將被更新,我不不知道IsChecked的默認值是什麼,但最好是明確的),或者簡單地改變DisplayLongUnit屬性來代替IsChecked屬性。

+0

感謝您的回覆Carrotman,但我沒有面對任何問題,我在我的問題中提供的綁定示例。問題是關於綁定重置或在某些情況下丟失。 – akjoshi 2010-09-09 06:29:14

0

不要忘記將「IsCheckable」設置爲true。如果它是錯誤的,則TwoWay綁定將不起作用。以下數據綁定MenuItem適用於我(無代碼隱藏):

<MenuItem Header="Select sense" ItemsSource="{Binding Path=AvailableSenses}" > 
    <MenuItem.ItemContainerStyle> 
     <Style TargetType="MenuItem"> 
      <Setter Property="Header" Value="{Binding Path=Sense.English}" /> 
      <Setter Property="IsCheckable" Value="True" /> 
      <Setter Property="IsChecked" Value="{Binding Path=IsSelected, Mode=TwoWay}" /> 
     </Style> 
    </MenuItem.ItemContainerStyle> 
</MenuItem> 
5

關於瞭解綁定是否已被分離:您可以執行的操作是調試綁定。 首先在XAML中添加診斷命名空間。這裏是一個窗口上的例子(爲了清楚起見,我已經刪除了其他通常的命名空間):

<Window xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase"> 

然後您在綁定上啓用跟蹤。下面是對一個TextBox的Text屬性的綁定設置一個例子:

<TextBox Text={Binding FirstName, diagnostics:PresentationTraceSources.TraceLevel=High} /> 

現在,如果你運行程序的時候,你會看到你的綁定信息,其中包括「分離在Visual Studio中的輸出選項卡看「當它被分離時。

所以這不會告訴你爲什麼它被分離,只有當。 雖然它可以幫助。