UserControl에서 파생 된 WPF에서 컨트롤이 있습니다. 컨트롤에 IsDraggable
이라는 종속성 속성이 있습니다. 그것은 다음과 같이 구현있어 다음 XAML에서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;
하는의 ContextMenu가 UserControl을 위해이 :
<UserControl.ContextMenu>
<ContextMenu>
<!-- other menu items here -->
<MenuItem
Header="Draggable"
IsCheckable="True"
Click="IsDraggableMenuItemClick"
IsChecked="{Binding Path=MyUserControlsNameProperty, ElementName=IsDraggable}" />
</ContextMenu>
</UserControl.ContextMenu>
이있는 UserControl을 사용하여, 나는 외부 UserControl을 내부의 메인 창에 하나 하나 추가 한 . 바깥 쪽 컨트롤에서 확인 가능한 MenuItem
은 예상대로 작동하지만 내부에서는 IsDraggable
이 거짓 일 때 검사되고, 맞으면 선택이 해제됩니다.
어떻게 될 수 있습니까?
아마도 MenuItem에서 클릭 처리기를 제거하기 만하면됩니다. IsCheckable을 true로 설정하고 바인딩을 IsChecked로 설정하면 충분합니다. – Clemens