C# wpf - 从 xml 文件加载的 MenuItem 标头(使用加速器 [alt 单击] 快捷方式)

发布于 2024-10-17 11:22:02 字数 788 浏览 0 评论 0原文

我正在尝试创建一个多语言 WPF 程序,该程序将从 xml 路径加载其语言,尽管我在加载 MenuItem 翻译并为其提供加速器时遇到问题。

这是主要代码:

<Window.Resources>
    <XmlDataProvider x:Key="Lang" Source="/lang/english.xml" XPath="Language/MainWindow"/>
</Window.Resources>
<MenuItem Header="{Binding Source={StaticResource Lang}, XPath=MenuItems/MenuItemFile/@Header}"/>

这是我的语言文件的样子:

<?xml version="1.0" encoding="utf-8" ?>
<Language>
    <MainWindow>
    <MenuItems>
        <MenuItemFile Header="File" />
    </MenuItems>
    </MainWindow>
</Language>

我的问题是: 在语言文件的这种状态下,一切正常,但是当我尝试将 MenuItemFile 的标题更改为“_File”(为其提供加速器选项)时,程序启动并为文件菜单提供标题“_File”,而不是“文件”(和加速器)。

提前致谢, 喧嚣。

I am trying to create a Multi-Language WPF program that will load it's languages from an xml path, though i'm having problem loading a MenuItem translation and give it it's accelerator.

Here's the main code:

<Window.Resources>
    <XmlDataProvider x:Key="Lang" Source="/lang/english.xml" XPath="Language/MainWindow"/>
</Window.Resources>
<MenuItem Header="{Binding Source={StaticResource Lang}, XPath=MenuItems/MenuItemFile/@Header}"/>

Here's how my language file looks like:

<?xml version="1.0" encoding="utf-8" ?>
<Language>
    <MainWindow>
    <MenuItems>
        <MenuItemFile Header="File" />
    </MenuItems>
    </MainWindow>
</Language>

My problem is:
in this state of the language file it's all ok, but when i am trying to change the Header of MenuItemFile to "_File" (to give it an accelerator option), the program starts and gives the File menu the Header "_File" and not "File" (and an accelerator).

Thanks in advanced,
Din.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

亢潮 2024-10-24 11:22:02

绑定到 AccessText 而不是直接绑定到 Header

<MenuItem>
    <MenuItem.Header>
        <AccessText Text="{Binding Source={StaticResource Lang}, XPath=MenuItems/MenuItemFile/@Header}"/>
    </MenuItem.Header>
</MenuItem>

Bind to AccessText instead of binding to Header directly:

<MenuItem>
    <MenuItem.Header>
        <AccessText Text="{Binding Source={StaticResource Lang}, XPath=MenuItems/MenuItemFile/@Header}"/>
    </MenuItem.Header>
</MenuItem>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文