2011-02-15 69 views
0

我想创建一个多语言WPF程序,将加载它的语言从xml路径,虽然我有问题加载一个MenuItem翻译并给它加速器。C#wpf - MenuItem从xml文件(加速器[alt点击]快捷方式)加载头

这里的主要代码:

<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> 

我的问题是: 在语言文件这一切都ok了这种状态,但当我试图将MenuItemFile的标题更改为“_File”(给它一个加速器选项)时,程序启动并为File菜单提供标题“_File”而不是“File”(和加速器)。

感谢先进的, 丁。

+0

你知道WPF内置的本地化构建正确的? http://msdn.microsoft.com/en-us/library/ms788718.aspx – Aren 2011-02-15 22:34:02

回答

1

绑定到AccessText,而不是结合Header直接:

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

优秀!工作很棒:) – dinbrca 2011-02-15 23:19:21