2015-01-01 2 views
1

나는 열거 형을 이렇게 가지고있다.열거 형의 값으로 콤보 상자 채우기

enum Beep {A, B, C } 

는 지금, 나는 다음과 같이 (아이디어 other's example을 따르는 것입니다)이 값을 내 콤보 상자를 채우는 바랍니다. 그러나

<ComboBox x:Name="comboBox1" 
      ... 
      ItemsSource="Binding Source={StaticResource Beep}" /> 

, 바인딩 조금 너무 정적 얻고 나 문자 그대로 내가 퍼팅있어 정확한 문자열을. 내가 잘못 했습니까이며 어떻게 그것을 해결 할 수 있습니다?

enter image description here

나는 또한 이런 식으로 뭔가를 추가 할 수있어 힌트 다음 시도했습니다. 그래도 아무 소용이 없습니다.

public List<Beep> Beepies 
{ 
    get 
    { 
    return new List<Beep>{ Beep.A } 
    } 
} 

더 많은 작업을 수행 할 수 있습니까? 내가 뒤에있는 코드를 바인드하면 상자에 값을 가져올 수 있습니다. 하지만 그게 중요한 것은 아닙니다. 저는이 접근법을 XAMLize하려고합니다.

comboBox1.ItemsSource = Enum.GetValues(typeof(Beep)); 
+0

@Rainer 고려하세요 두 질문의 내용을 더 신중하게 읽으십시오. 링크 된 것입니다. 질문은 근본적으로 다릅니다. 동일한 키워드를 사용하기 때문에 같은 지역 출신이기 때문입니다. –

+0

귀하의 질문이 주어진 방향으로 나를 안내한다고 생각하십시오. 당신이 생각할 수 있듯이, 내 깃발이 나쁘지는 않다는 결론을 내릴 수 있습니다. 당신의 질문을 오해 할 수 있습니다. 문제 : 귀하가 데이터 바인딩을 잘못하고있는 것일 수 있습니까? "ComboBox x : Name ="comboBox1 "... ItemsSource ="{ComboBox x : Name = "comboBox1" 바인딩 소스 = {StaticResource Beep}} "/>'? – Rainer

+0

당신은'{'이 없습니다. Use ItemsSource = "{Binding Source = {StaticResource Beep}}" –

답변

0

컬렉션을 사용하여 바인딩해야합니다. List<Beep>을 만들어보세요.

또는

(가) enum 열거 컨버터 만들기 :

public class EnumConverter : IValueConverter 
{ 
    public object Convert(object value, ...) 
    { 
    return Enum.GetValues(value.GetType()); 
    } 
} 

그런 다음 접근 방식을 XAMLise하는 바인딩에서이 변환기를 사용할 수 있습니다

<!-- Put this in resources somewhere --> 
<Converters:EnumConverter x:Key="MyEnumConverter"/> 

<!-- Change your binding to include the new converter --> 
<ComboBox x:Name="comboBox1" 
      ... 
      ItemsSource="Binding Source={StaticResource Beep}, 
         Converter={StaticResource MyEnumConverter}" /> 
+0

나는 질문에 추가했다. 그 제안? –

+0

변환기를 사용하는 또 다른 접근법을 추가했습니다. 어떤 enum에 대해서도 재사용 가능합니다. – Laith

+0

작동하지 않는 것 같습니다 (이름을 사용할 수 없다는 오류가 있습니다.) 그러나 * ItemsSource = "{x : Static local : MainWindow.AllBeeps}"* 일하다.당신이 제안하는 것과 다른 구문 일 뿐이라는 것을 확인할 수 있습니까? * x *가 무엇인지 모르겠습니다. 그리고 * local : ClassName.PropName *이 XAML 코드의 상위 참조를 사용하여 더 짧게 만들 수 있는지 알고 싶습니다. –