我想基于流文档实现应用程序View的上下文帮助。例如,用户按下Ctrl + F1,并在此视图上显示有关当前视图的上下文帮助。必须对帮助内容进行本地化。
在窗口标记中可以看起来像这样:
<Window x:Class="UdkppReports.Window2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window2" Height="300" Width="300">
<Grid>
<ContentControl x:Name="View"/>
<ContentControl x:Name="Help" Visibility="Collapsed">
<ContentControl.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding CurrentView.HelpContent}" Value="{x:Null}">
<Setter Property="Grid.Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</Grid>
View.HelpContent属性是具有嵌入式FlowDocumentScrollViewer的UserControl的实例。在每个View类的非本地化应用程序中,我将创建一个HelpContent类。本地化应用程序怎么样?
现在只有一个想法 - 每个View类必须创建尽可能多的文本应用程序支持的HelpContent类。例如,对于SomeView类,我有:
并在自定义SomeView.LoadHelp命令(或自定义Loadhelp事件或其他地方)中我需要动态确定帮助类的名称,例如
string lang = Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName;
string helpClassShortName = "SomeView_" + lang;
并进一步获取完整的类名,尝试动态创建帮助类的实例,并将View.HelpContent属性分配给此实例。这应该有效,但可能是流量文档本地化的标准方法吗?
答案 0 :(得分:0)
您是否尝试使用LocBaml工具进行本地化?每个xaml元素都支持x:Uid属性,因此您可以使用this solution。还有一篇关于MS Exam 70-502 Training Kit中本地化的文章。
答案 1 :(得分:0)
在我看来,最好的方法是使用WPF Localization Extension。 与该库的作者click me
一起查看关于流文档支持的讨论