AvalonDock - 将MenuItem绑定到DockableContent状态

时间:2010-07-06 00:26:20

标签: c# .net wpf binding avalondock

我正在使用AvalonDock来布局我的应用程序。

我想为每个可显示/隐藏每个项目的DockableContents创建一个带有可检查MenuItem的“View”MenuItem。

我没有找到任何人这样做的例子,在我看来State属性是readonly,因此无法创建与MenuItem的双向绑定。看起来你也必须调用方法来改变状态。

任何人都有一个聪明的方法来做绑定吗?或者有一种简单的方法可以解决这个问题。

1 个答案:

答案 0 :(得分:1)

一种可能的解决方案是使用附加属性。附加属性将调用必要的方法来更改状态。然后你可以绑定到那个。

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.
        }
    }
}