gpt4 book ai didi

c# - WpfToolkit AutoCompleteBox 上下文菜单不工作

转载 作者:太空狗 更新时间:2023-10-29 17:59:23 25 4
gpt4 key购买 nike

在我的一个 WPF 项目中,我集成了 WPF Toolkit 的 AutoCompleteBox 控件。我需要此控件的自定义 Context Menu,我已使用 ContextMenu 属性添加了一个。不幸的是,它没有显示自定义创建的,而是显示默认创建的(即剪切、复制、粘贴,剪切和复制已禁用)。

为了重现该问题,我创建了一个示例项目,该窗口在 Grid 中包含 2 个控件。

<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<toolkit:AutoCompleteBox>
<toolkit:AutoCompleteBox.ContextMenu>
<ContextMenu>
<MenuItem Header="Menu Item 1"></MenuItem>
<MenuItem Header="Menu Item 2"></MenuItem>
</ContextMenu>
</toolkit:AutoCompleteBox.ContextMenu>
</toolkit:AutoCompleteBox>
<TextBox Grid.Row="1" >
<TextBox.ContextMenu>
<ContextMenu>
<MenuItem Header="Menu Item 1"></MenuItem>
<MenuItem Header="Menu Item 2"></MenuItem>
</ContextMenu>
</TextBox.ContextMenu>
</TextBox>
</Grid>

这两个控件具有相同的 ContextMenu,如果我运行该解决方案,我可以看到自定义创建的 ContextMenu 正在为 TextBox 工作而不是 AutoCompleteBox

另外,我将相同的上下文菜单设置为 Grid(父控件)并将 ContextMenu="{x:Null}" 设置为 TextBox & AutoCompleteBox。现在 ContextMenu 是为 TextBox 继承的,但不是为 AutoCompleteBox 继承的。

所以我的问题是,如何为 AutoCompleteBox 创建自定义 ContextMenu?如果不是设计(AutoCompleteBox),我如何将 ContextMenu 添加到从 AutoCompleteBox 继承的自定义 AutoCompleteBox 控件。请指教。

最佳答案

AutoCompleteBox 公开依赖属性 TextBoxStyle,您可以设置它以自定义托管在 AutoCompleteBox 中的 TextBox

另一种方法是提供您自己的模板,我强烈反对,因为此 DP 是明确提供给您想要的目的,即从外部自定义 textBox。

使用自定义上下文菜单为 TextBox 创建样式,并将该模板应用于 TextBox 和 AutoCompleteBox。这个示例工作正常 -

<Grid>
<Grid.Resources>
<Style x:Key="CustomStyle" TargetType="TextBox"
BasedOn="{StaticResource {x:Type TextBox}}">
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu>
<MenuItem Header="Header1"/>
<MenuItem Header="Header2"/>
</ContextMenu>
</Setter.Value>
</Setter>
</Style>
</Grid.Resources>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<toolkit:AutoCompleteBox TextBoxStyle="{StaticResource CustomStyle}"/>
<TextBox Grid.Row="1" Style="{StaticResource CustomStyle}"/>
</Grid>

关于c# - WpfToolkit AutoCompleteBox 上下文菜单不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19488868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com