C# 多语言WPF应用程序:不使用combobox
我已经使用Andre的答案创建了一个多语言WPF应用程序。我像这样装订文本C# 多语言WPF应用程序:不使用combobox,c#,wpf,C#,Wpf,我已经使用Andre的答案创建了一个多语言WPF应用程序。我像这样装订文本 <TextBlock Text="{DynamicResource Create}"/> 语言显示为“英语”和“法语”。但是,当我切换语言时,不会再次调用转换器,也不会更新语言名称,因此这不是真正的解决方法 我非常感谢你给我一个关于原因和如何解决这个问题的提示。我将首先解释一些事情不起作用的原因 .... <DataTemplate> <TextBlock
<TextBlock Text="{DynamicResource Create}"/>
语言显示为“英语”和“法语”。但是,当我切换语言时,不会再次调用转换器,也不会更新语言名称,因此这不是真正的解决方法
我非常感谢你给我一个关于原因和如何解决这个问题的提示。我将首先解释一些事情不起作用的原因
....
<DataTemplate>
<TextBlock Text="{DynamicResource LanguageId}"/>
</DataTemplate>
....
您已接近解决方案。我的建议是尝试以下方法:-
....
<DataTemplate>
<TextBlock>
<TextBlock.Text>
<MultiBinding Converter="{StaticResource DynamicResourceConverter}">
<Binding Path="LanguageId"/>
<Binding Path="SomeOtherPropertyThatChangesWhenLanguageIsSwitched" Source="{StaticResource Locator}"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
....
提供的链接无效。感谢您的解释和帮助!
....
<DataTemplate>
<TextBlock Text="{DynamicResource LanguageId}"/>
</DataTemplate>
....
....
<DataTemplate>
<TextBlock Text="{DynamicResource ResourceKey={Binding LanguageId}}"/>
</DataTemplate>
....
....
<DataTemplate>
<TextBlock>
<TextBlock.Text>
<MultiBinding Converter="{StaticResource DynamicResourceConverter}">
<Binding Path="LanguageId"/>
<Binding Path="SomeOtherPropertyThatChangesWhenLanguageIsSwitched" Source="{StaticResource Locator}"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
....
public class DynamicResourceConverter: IValueConverter, IMultiValueConverter
{
....
// original converter implementation for IValueConverter
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
....
}
// newly added converter implementation for IMultiValueConverter
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
//call the original converter method with one value (assuming you've checked the array has at least one item!!
return Convert(values[0], targetType, parameter, culture)
}
....
}