2
我在從UserControl派生的WPF中有一個控件。該控件具有名爲IsDraggable
的依賴項屬性。它的實現是這樣的:WPF綁定到自定義DependencyProperty - IsChecked有時候是相反的屬性值
public static readonly DependencyProperty IsDraggableProperty =
DependencyProperty.Register(nameof(IsDraggable), typeof(bool), typeof(MyUserControl));
public bool IsDraggable
{
get { return (bool)this.GetValue(IsDraggableProperty); }
set { this.SetValue(IsDraggableProperty, value); }
}
private void IsDraggableMenuItemClick(object sender, RoutedEventArgs e)
=> this.IsDraggable = !this.IsDraggable;
在XAML中,有一個文本菜單的用戶控件:
<UserControl.ContextMenu>
<ContextMenu>
<!-- other menu items here -->
<MenuItem
Header="Draggable"
IsCheckable="True"
Click="IsDraggableMenuItemClick"
IsChecked="{Binding Path=MyUserControlsNameProperty, ElementName=IsDraggable}" />
</ContextMenu>
</UserControl.ContextMenu>
使用該用戶控件,我加入了一個到主窗口和一個外部用戶控件內。在外部控制中,可檢查MenuItem
的工作方式與預期的類似,但在內部控制中,檢查IsDraggable
是否爲假,並在其爲真時取消選中。
這是什麼原因造成的?
也許只是從MenuItem中刪除Click處理程序。將IsCheckable設置爲true並且綁定IsChecked應該足夠了。 – Clemens