将ContextMenu放在WPF样式中

ind*_*dra 2 c# wpf styles contextmenu

我试图将ContextMenu放在下面的样式中,以便它可以被所有文本框共享.

<Grid.Resources>
            <Style x:Key="Cell" TargetType="TextBox">
                <Setter Property="Margin" Value="0"/>
                <Setter Property="BorderBrush" Value="Black"/>
                <Setter Property="BorderThickness" Value="0.2"/>
                <Setter Property="VerticalAlignment" Value="Stretch"/>
                <Setter Property="HorizontalAlignment" Value="Stretch"/>
                <Setter Property="MinHeight" Value="30"/>
                <Setter Property="MinWidth" Value="70"/>
                <Setter Property="ContextMenu">
                    <Setter.Value>
                        <ContextMenu>
                            <MenuItem Header="Level1" Click="SubLevel1_Click_1"/>
                            <MenuItem Header="SubLevel1"/>
                        </ContextMenu>
                    </Setter.Value>
                </Setter>
            </Style>

        </Grid.Resources>
Run Code Online (Sandbox Code Playgroud)

此代码正常工作,直到我添加Click事件.当添加click事件时,它构建但在执行时抛出异常:'set connectionId引发异常.行号'21'和行位置'34'.

我在这里做错了什么.

Ath*_*ari 5

不确定是什么导致了这种情况,但您可以通过将其ContextMenu作为单独的资源轻松解决此问题:

<ContextMenu x:Key="ContextMenu">
    <MenuItem Header="Level1" Click="SubLevel1_Click_1"/>
    <MenuItem Header="SubLevel1"/>
</ContextMenu>
<Style TargetType="TextBox">
    <Setter Property="ContextMenu" Value="{StaticResource ContextMenu}"/>
</Style>
Run Code Online (Sandbox Code Playgroud)