Помещение UserControl в ContextMenu - PullRequest
0 голосов
/ 03 мая 2019

У меня есть UserControl, который в основном настроен на ContextMenu.Пример ниже:

<UserControl x:Class="TestProj.Views.ContextMenuView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             mc:Ignorable="d" 
             Height="450" Width="172">
    <StackPanel>
        <MenuItem Header="Set" Command="{Binding SetModeCmd}">
            <MenuItem.Icon>
                <Image Source="../Images/set.ico" />
            </MenuItem.Icon>
        </MenuItem>
        <Separator />
        <MenuItem Header="Views...">
            <MenuItem Header="Open..." />
            <MenuItem Header="Save..." />
            <MenuItem Header="Factory Default" />
        </MenuItem>
    </StackPanel>
</UserControl>

Теперь у меня есть основной Window с ContentControl.Я хочу, чтобы ContentControl отображал мой UserControl вместо обычного ContextMenu.Я попытался поместить свой элемент управления внутри самого ContextMenu, но ни один из пунктов меню не активировался, потому что ContextMenu всегда имеет фокус.

Вот соответствующая часть в моем главном окне:

<ContentControl Content="{Binding MainView}">
    <ContentControl.ContextMenu>
        <ContextMenu>
            <views:ContextMenuView /> <!-- trying to put my usercontrol here -->
        </ContextMenu>
    </ContentControl.ContextMenu>
</ContentControl>

Редактировать: Весь .xaml для главного окна:

<Window x:Class="TestProj.MainWindow"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:views="clr-namespace:TestProj.Views"
             mc:Ignorable="d" Height="737.239" Width="1455.446"
             Name="OnyxControl">
    <Grid>
        <ContentControl Content="{Binding MainView}" Focusable="True">
            <ContentControl.ContextMenu>
                <ContextMenu>
                    <MenuItem>
                        <MenuItem.Header>
                            <views:ContextMenuView />
                        </MenuItem.Header>
                    </MenuItem>
                </ContextMenu>
            </ContentControl.ContextMenu>
        </ContentControl>
    </Grid>
</Window>

Пользовательский элемент управления:

<UserControl x:Class="TestProj.Views.ContextMenuView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             mc:Ignorable="d" 
             Height="57.2" Width="172"
             Background="Transparent">
    <StackPanel>
        <MenuItem Header="Pan" />
        <Separator />
        <MenuItem Header="Views...">
            <MenuItem Header="Open..." />
            <MenuItem Header="Save..." />
            <MenuItem Header="Factory Default" />
        </MenuItem>
    </StackPanel>
</UserControl>
...