gpt4 book ai didi

c# - 当 UI 元素绑定(bind)到命令时,如何使用 StringFormat 去除 InputGesture 文本?

转载 作者:太空宇宙 更新时间:2023-11-03 12:28:35 26 4
gpt4 key购买 nike

我有一个绑定(bind)到字符串集合的菜单项列表。单击这些菜单项中的每一个时,都会触发我的“打开”命令。这一切都很好。

如何省略每个菜单项旁边的 Ctrl+O?

下面是我的 XAML。

                <MenuItem Header="Recent packages" ItemsSource="{Binding Source={x:Static p:Settings.Default}, Path=RecentItems}">
<MenuItem.ItemTemplate>
<DataTemplate>
<MenuItem CommandTarget="{Binding}" Command="ApplicationCommands.Open" CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=Header}">
<MenuItem.Header>
<TextBlock>
<TextBlock.Text>
<Binding StringFormat="{}{0}" />
</TextBlock.Text>
</TextBlock>
</MenuItem.Header>
</MenuItem>
</DataTemplate>
</MenuItem.ItemTemplate>
</MenuItem>

这是我正在谈论的图片。 enter image description here

最佳答案

How do I use StringFormat to get rid of the InputGesture text when a UI element is bound to a command?

你不知道。 Header 属性与手势文本的显示无关,对其应用 StringFormat 或其他任何内容都不会产生任何影响。

您可以使用 Hide or disable Input Gesture Text in wpf 中的方法, 建议 the comment above .在这种情况下,您可能只需将文本颜色的 alpha 设置为 0。但更简单的方法是将 MenuItem.InputGestureText 值设置为 ""(注意空格……如果您使用空字符串,WPF 将忽略它)。

综上所述,我认为您的处理方式是错误的。

您首先获得手势文本的原因是因为您使用 ApplicationCommands.Open 作为菜单项的命令。但这并不是真正正确的命令。您已经将其用于"file"菜单中的“打开包...”命令。所以这实际上不是同一个命令,是吗?

即使您隐藏了输入的手势文本,实际上也不会删除 手势。它只是没有在菜单中记录它。那么,当用户按下 Ctrl+O 时,您希望执行这三个菜单项中的哪一个?您如何期望 WPF 确保它会执行您想要的命令?

在我看来,您应该定义自己的 ICommand 以与这些菜单项一起使用,并将 ApplicationsCommand.Open 命令排除在外。为您确实需要键盘快捷键的一个命令保留它。使用您自己的 ICommand(例如 RoutedUICommand),您可以简单地不定义输入手势/键盘快捷键,然后菜单中将不会显示任何内容。

关于c# - 当 UI 元素绑定(bind)到命令时,如何使用 StringFormat 去除 InputGesture 文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43644798/

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