C# 我应该如何本地化静态组合框项目?
我有一个非常简单的C# 我应该如何本地化静态组合框项目?,c#,wpf,combobox,C#,Wpf,Combobox,我有一个非常简单的组合框,里面有一些x:Static项: <ComboBox SelectedItem="{Binding Source={x:Static u:Settings.All}, Path=CaptionFontStyle}"> <ComboBox.ItemTemplate> <DataTemplate> <TextBlock FontStyle="{Binding .}" FontSize="
组合框
,里面有一些x:Static
项:
<ComboBox SelectedItem="{Binding Source={x:Static u:Settings.All}, Path=CaptionFontStyle}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock FontStyle="{Binding .}" FontSize="14" Text="{Binding .}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
<x:Static Member="FontStyles.Normal"/>
<x:Static Member="FontStyles.Italic"/>
<x:Static Member="FontStyles.Oblique"/>
</ComboBox>
但这并没有像预期的那样起作用/
后反应 正如@Funk所写的,我可以简单地使用
SelectedValue
和SelectedValuePath
直接绑定到类的属性。因此,我目前正在使用此方案:
<ComboBox SelectedValuePath="FontStyle"
SelectedValue="{Binding Source={x:Static u:Settings.All}, Path=MyFontStyle}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock FontStyle="{Binding FontStyle}"
FontSize="14" Text="{Binding Text}"/>
</DataTemplate>
</ComboBox.Resources>
<TextBlock FontStyle="Normal" Text="Normal"/>
<TextBlock FontStyle="Italic" Text="Itálico"/>
<TextBlock FontStyle="Oblique" Text="Oblíquo"/>
</ComboBox>
您可以使用RichText类
public class RichText
{
#region Text Property
private String _text = "";
public String Text
{
get { return _text; }
set { _text = value; }
}
#endregion Name Property
#region FontStyle Property
private FontStyle _fontStyle = FontStyles.Normal;
public FontStyle FontStyle
{
get { return _fontStyle; }
set { _fontStyle = value; }
}
#endregion FontStyle Property
}
并使用SelectedValue更新设置
<ComboBox
SelectedValuePath="FontStyle"
SelectedValue="{Binding Source={x:Static u:Settings.All}, Path=CaptionFontStyle}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock FontStyle="{Binding FontStyle}" FontSize="14" Text="{Binding Text}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
<local:RichText Text="Foo">
<local:RichText.FontStyle>
<x:Static Member="FontStyles.Normal"/>
</local:RichText.FontStyle>
</local:RichText>
<local:RichText Text="Bar">
<local:RichText.FontStyle>
<x:Static Member="FontStyles.Italic"/>
</local:RichText.FontStyle>
</local:RichText>
<local:RichText Text="Far">
<local:RichText.FontStyle>
<x:Static Member="FontStyles.Oblique"/>
</local:RichText.FontStyle>
</local:RichText>
</ComboBox>
在使用文本绑定时,实现INotifyPropertyChanged。我完全忘记了
SelectedValue
和SelectedValuePath
。这使我可以简单地使用TextBlock
而不是这个自定义类。谢谢
<ComboBox
SelectedValuePath="FontStyle"
SelectedValue="{Binding Source={x:Static u:Settings.All}, Path=CaptionFontStyle}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock FontStyle="{Binding FontStyle}" FontSize="14" Text="{Binding Text}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
<local:RichText Text="Foo">
<local:RichText.FontStyle>
<x:Static Member="FontStyles.Normal"/>
</local:RichText.FontStyle>
</local:RichText>
<local:RichText Text="Bar">
<local:RichText.FontStyle>
<x:Static Member="FontStyles.Italic"/>
</local:RichText.FontStyle>
</local:RichText>
<local:RichText Text="Far">
<local:RichText.FontStyle>
<x:Static Member="FontStyles.Oblique"/>
</local:RichText.FontStyle>
</local:RichText>
</ComboBox>