1

AvalonDockを使用してアプリケーションをレイアウトしています。

各アイテムを表示/非表示にする各DockableContentsのチェック可能なMenuItemを使用して「View」MenuItemを作成したいと思います。

これを行っている人の例は見つかりません。Stateプロパティは読み取り専用であるため、MenuItemへの双方向バインディングを作成できません。また、状態を変更するにはメソッドを呼び出す必要があるようです。

バインディングを使ってこれを行う賢い方法はありますか?それとも私が行方不明になっているそれを行う簡単な方法はありますか?

4

1 に答える 1

1

考えられる解決策の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.
        }
    }
}
于 2010-07-06T01:38:19.087 に答える