将ContextMenu放入WPF样式中

4
我尝试使用以下样式将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>

在添加点击事件之前,此代码运行良好。添加点击事件后,它可以构建但在执行时会抛出以下异常: “设置connectionId时引发了异常。” 行号 '21' 和行位置 '34'。

我在这里做错了什么?


你能同时发布一下你的点击事件代码吗? - Krishna
实际上,即使我将整个点击事件的主体保持为空,错误仍然会出现。 - indra
通过代码添加了上下文菜单。 - indra
1个回答

7

不确定是什么导致了这个问题,但您可以通过将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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接