Привязать видимость LayoutAnchorable к отмеченному элементу меню - PullRequest
0 голосов
/ 10 июля 2020

C#, WPF. Я хотел бы показать / скрыть панели AvalonDock с помощью отмеченных пунктов меню. Хотя я мог бы сделать это с помощью событий _Click, я считаю, что было бы неплохо использовать вместо этого привязку и что это должно быть возможно достичь полностью, используя XAML.

Я подозреваю, что ответ должен быть строки this one и основывали свою попытку на одном из приведенных там ответов.

Этот код компилируется и запускается, но нет связи между проверяемым меню и закрепляемой панелью быть видимым. Ключевая строка такова:

<MenuItem Header="Panel" Name="PanelVisible" IsCheckable="True" IsChecked="{Binding Path=testAnchorable.IsVisible, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">

Как я могу заставить это работать?

<Window x:Class="TestAvalon.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:dock="http://schemas.xceed.com/wpf/xaml/avalondock"
    mc:Ignorable="d"
    Title="MainWindow" Height="450" Width="800">
<Grid>

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="20"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>

        <Menu Height="18" HorizontalAlignment="Stretch" Name="menu1" VerticalAlignment="Top" Grid.Row="0">
            <MenuItem Header="View">
                <MenuItem Header="Panel" Name="PanelVisible" IsCheckable="True" IsChecked="{Binding Path=testAnchorable.IsVisible, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
                </MenuItem>
            </MenuItem>
        </Menu>

        <dock:DockingManager x:Name = "Dockman" DataContext = "{Binding DockManagerViewModel}"
            DocumentsSource = "{Binding Documents}" DockPanel.Dock = "Left" Grid.Row = "1" >

        <dock:LayoutRoot x:Name = "_layoutRoot" >
            <dock:LayoutPanel x:Name = "_layoutPanel" >
                <dock:LayoutAnchorablePane DockWidth="400">
                    <dock:LayoutAnchorable x:Name ="testAnchorable" Title = "TEST PANE" IsSelected = "True">
                        <TextBlock Name="tb" Text="*****"/>
                    </dock:LayoutAnchorable >
                </dock:LayoutAnchorablePane >
            </dock:LayoutPanel >
        </dock:LayoutRoot >
    </dock:DockingManager>
    </Grid>
</Grid>

1 Ответ

0 голосов
/ 01 сентября 2020

У этого вопроса теперь есть решение:

Привязка свойства AvalonDock LayoutAnchorable IsVisible

(Там даны два ответа, и я думаю, что они оба выполняют свою работу .)

...