在我的WPF 4.0基于桌面的应用程序中,为了本地化我的应用程序(例如英语和法语本地化),我正在使用Resources.resx文件,在那里我输入对话框名称(ID)及其用于英语和法语本地化的值。一切都很好,除了一件事 - Visual Studio 2010的智能感知。
我们说,我有一个按钮:
<Button x:Name="Toolbar_Search_Button"
Content="{x:Static res:Resources.Toolbar_Search_Button}" />
我想将其内容(按钮上的标签)用英语和法语放在哪里,为了做到这一点,我添加了一个ID为Toolbar_Search_Button
的Resources.resx和Resources.fr.resx字符串,为每个人(Search / Recherche)提供了一个值,现在我必须将字符串ID分配给按钮内容属性。在我的情况下,我必须编写所有这些长字符串:x:Static res:Resources.Toolbar_Search_Button
并且IntelliSense根本不帮助我。它建议我唯一的问题是Member=
,但我希望当我输入res:Resources.
时,它会给我所有现有的字符串ID,因为我们通常可以看到启用IntelliSense的时候。
我检查了VS2010首选项,IntelliSense启用了各种项目/语言,当我编写其他XAML / C#代码时,它就可以工作,就像我输入«Wi»它表示我“宽度”等。
我的问题是:
如何为本地化/资源启用IntelliSense?我可以输入res:Resources.
并查看我拥有的所有本地化资源字符串。
非常感谢。
答案 0 :(得分:1)
我有完全相同的问题。我不相信微软愚蠢到通过一些默认的Visual Studio 2010安装的未设置选项/设置禁用那个智能感知器。
但我确实相信微软愚蠢到不能在VS 2010中实现这个功能。我可以原谅他们VS 2008,因为这是XAML设计支持的第一个正确实现(VS 2005插件是别的东西)。如果你在resx文件中写一个字符串,然后在XAML中指定键值,那么缺乏实现可能与事实有关,XAML将开始抱怨你的resx文件中不存在新密钥。构建应用程序后,XAML将开始接受新密钥。
请注意,XAML开始时具有可怕的智能感知支持。以代码背后的新的和改进的intellisense为例 - 如果你键入“.Cust”,intellisense将同时提供“Customer”和“ExistingCustomer”。但是在XAML intellisense中没有实现相同的功能。还有更多这样的例子......
所以回答你的问题 - 你不能在XAML中启用resx intellisense支持,至少我不知道这种可能性。