2012-01-12 1 views
2

저는 여기와 웹에서 많은 것을 읽었지만 대답을 찾지 못했습니다 ... 코드의 속성 인 Collection에 바인딩 된 ComboBox가 있습니다. 이 같은 -behind 재산 :ComboBox의 DefaultValue (한 번 설정)

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

이 작동하지만 일이 내 UI가로드 될 때 기본값이 선택되지 않도록하고 나는 내 컬렉션에 포함되어 있는지 알고 원인 '값을 설정하고 싶습니다 최소한 문자열 "default". SelectedItem 또는 SelectedValue을 사용하여 많은 것을 보았습니다. 그러나 이것은 일종의 Binding을 생성하고 시작시 한 번만 시작되기를 바랍니다. 어떻게하면됩니까?

+0

[Databound WPF ComboBox에 대한 기본값 표시] (http://stackoverflow.com/questions/1910896/display-a-default-value-for-a-databound-wpf-combobox) – stuartd

+0

이 복제본은 내가 가지고있는 Collection에는 적용 할 수 없습니다 :/ –

+0

ComboBox의 SelectedValue를 전혀 바인딩하지 않습니까? –

답변

2

먼저이 같은 열거를 생성해야합니다, 그래서 당신은 콤보 상자에 표시 할 수 있습니다 : 당신이를 IEnumerable을 반환하는 방법을 만들어야합니다 이후

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

당신의 이 같은 속성 :

/// <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); 

희망이 도움이됩니다.

+0

필요한 경우 XAML에서도 작성한 글을 게시 할 수 있습니다. – Vinicius

+0

나는 이것을 가지고 있지만 이것은 ComboBox의 기본값을 쉽게 설정할 수 없다는 점과 유일한 해결책은 많은 것을 정의하는 것입니다. o –

+0

우리는 많이 시도했지만, 우리가 얻은 유일한 방법은 그. – Vinicius

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

시도했지만 "기본"문자열이 List의 첫 번째 문자열이 될 것이라고 절대 확신 할 수 없습니다. 최종 릴리스에서 제어권을 가지고 있지 않습니다! –