我正在使用AvalonDock来布局我的应用程序。
我想为我的每个可显示/隐藏每个项目的 DockableContents 创建一个带有可检查 MenuItem 的“视图”菜单项。
我没有找到任何人这样做的示例,在我看来,State 属性是只读的,因此无法创建到 MenuItem 的 2 路绑定。看起来您必须调用方法来更改状态。
任何人都有一个聪明的方法来用绑定做到这一点?或者有没有一种简单的方法可以做到这一点,我错过了。
我正在使用AvalonDock来布局我的应用程序。
我想为我的每个可显示/隐藏每个项目的 DockableContents 创建一个带有可检查 MenuItem 的“视图”菜单项。
我没有找到任何人这样做的示例,在我看来,State 属性是只读的,因此无法创建到 MenuItem 的 2 路绑定。看起来您必须调用方法来更改状态。
任何人都有一个聪明的方法来用绑定做到这一点?或者有没有一种简单的方法可以做到这一点,我错过了。
一种可能的解决方案是使用附加属性。附加属性将调用必要的方法来更改状态。然后你可以绑定到那个。
public static class ContentAttach
{
public static readonly DependencyProperty StateProperty = DependencyProperty.RegisterAttached(
"State", typeof(DockableContentState), typeof(ContentAttach), new PropertyMetadata(StateChanged));
public static void SetState(DockableContent element, DockableContentState value)
{
element.SetValue(StateProperty, value);
}
public static DockableContentState GetState(DockableContent element)
{
return (DockableContentState)element.GetValue(StateProperty);
}
private static void StateChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var element = (DockableContent)d;
var state = (DockableContentState)e.NewValue;
switch (state)
{
// Call methods in here to change State.
}
}
}