ComboBox的DefaultValue(设置为ONCE)

时间:2012-01-12 13:00:48

标签: c# wpf xaml

我在网上和网上看了很多东西,但没有找到答案...... 我有一个绑定到Collection的ComboBox,它是一个代码隐藏属性的属性,如下所示:

<ComboBox ItemsSource="{Binding Path=LocalizationUtil.AvailableLocales}"/>

这样可行,但事实是当我的UI加载时,没有选择默认值,我想设置一个值'因为我知道我的Collection至少包含字符串“default”。 我使用SelectedItemSelectedValue看到了很多东西,但是这创建了一种Binding,我希望它在开始时只在ONCE启动。 我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

<ComboBox ItemsSource="{Binding Path=LocalizationUtil.AvailableLocales}" SelectedIndex="0"/>

答案 1 :(得分:2)

首先你必须创建一个这样的枚举,这样你才能在组合框上显示它:

[Flags]    
public enum Actions
{
    [Description("None")]
    None = 0,
    [Description("Edit")]
    Edit = 1,
    [Description("Print")]
    Imprimir = 2,
}

在此之后,您必须创建一个方法将IEnumerable返回到您的属性,如下所示:

    /// <summary>
    /// Get the list with names and descriptions of Enum
    /// </summary>
    /// <typeparam name="T">Enum Type</typeparam>
    /// <param name="usarNome">if true the key is the Enum name</param>
    /// <returns>List with names and descriptions</returns>
    public static IEnumerable<KeyValuePair<string, T>> GetEnumList<T>(bool usarNome)   
    {   
        var x = typeof(T).GetFields().Where(info => info.FieldType.Equals(typeof(T)));   
        return  from field in x   
                select new KeyValuePair<string, T>(GetEnumDescription(field, usarNome), (T)Enum.Parse(typeof(T), field.Name, false));    
    }   

然后在构造函数中或您想要的任何位置定义它:

    MyActions = EnumHelpers.GetEnumList<Actions>(false);

希望它对你有所帮助。