AvalonDock - привязка элемента меню к состоянию DockableContent - PullRequest
1 голос
/ 06 июля 2010

Я использую AvalonDock для компоновки моего приложения.

Я хочу создать «View» MenuItem с проверяемым MenuItem для каждого из моих DockableContents, которое будет показывать / скрывать каждый элемент.

Я не нахожу примера того, кто это делает, и мне кажется, что свойство State доступно только для чтения, что не позволяет создать двустороннюю привязку к MenuItem.Похоже, что вы должны вызывать методы для изменения состояния.

У кого-нибудь есть умный способ сделать это с привязками?Или есть простой способ сделать это, я скучаю.

1 Ответ

1 голос
/ 06 июля 2010

Одним из возможных решений является использование прикрепленного свойства.Присоединенное свойство будет вызывать необходимые методы для изменения состояния.Вы можете привязать к этому.

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