代码之家  ›  专栏  ›  技术社区  ›  jonathanpeppers

AvalonDock-将菜单项绑定到可停靠内容的状态

  •  1
  • jonathanpeppers  · 技术社区  · 14 年前

    我在用 AvalonDock

    我没有找到任何人这样做的例子,而且在我看来State属性是只读的,这使得无法创建到MenuItem的双向绑定。看起来还需要调用方法来更改状态。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Joseph Sturtevant    14 年前

    一种可能的解决方案是使用附加属性。附加属性将调用必要的方法来更改状态。你就可以把它绑起来。

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