【发布时间】:2011-08-25 14:07:54
【问题描述】:
我正在 WPF 中创建一个 UserControl,我称之为 YesNoButton。
它有一个 DependencyProperty IsChecked,并包含两个 ToggleButtons,标签分别为“Yes”和“No”。我已将 Yes ToggleButton 的 IsChecked 属性绑定到父 YesNoButton 的 IsChecked 属性。我已通过“逆布尔”IValueConverter 将 No ToggleButton 的 IsChecked 属性绑定到 Yes ToggleButton 的 IsChecked 属性。这是我的 YesNoButton 标记,减去了一些外观和感觉:
<UserControl ...>
<StackPanel Orientation="Horizontal">
<ToggleButton x:Name="YesButton" IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type Controls:YesNoButton}}, Path=IsChecked}">Yes</ToggleButton>
<ToggleButton IsChecked="{Binding ElementName=YesButton, Path=IsChecked, Converter={StaticResource BooleanToInverseConverter}}">No</ToggleButton>
</StackPanel>
</UserControl>
在我的应用中,我包含如下 YesNoButton:
<local:YesNoButton IsChecked="{Binding Path=BoolPropertyOfDataContext}" />
当窗口第一次加载时,如果我通过其他方式切换 BoolPropertyOfDataContext,YesNoButton 反应完美。
但是当我单击是或否切换按钮时,虽然 YesNoButton 视觉状态更新正确,但与 BoolPropertyOfDataContext 的绑定完全停止工作 - 它似乎被取消了。我认为这些“绑定链”应该可以正常工作,但我显然在这里遗漏了一些东西!
有什么想法吗?
【问题讨论】:
标签: .net wpf wpf-controls binding