Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我应该如何本地化静态组合框项目?_C#_Wpf_Combobox - Fatal编程技术网

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>