this very related question here on SO을 읽었으며 답변의 링크 때문에 매우 유용했습니다. 지금 막 추가 단계로 가고 MVVM 패턴으로 모든 작업을 수행하는 데 문제가 있습니다.WPF + MVVM의 ComboBox에 대한 열거 형 데이터 바인딩
의 내가 내 뷰 모델을, 그리고 (또는 모델)을 열거 정의 할 수 있다고 가정 해 봅시다 : 내 GUI에서 콤보 상자에이 데이터 바인딩 할
public enum MyTypes { Type1, Type2, Type3 };
. 이 기사에 따르면 ObjectDataProvider를 사용하여 MyTypes에서 Enum.GetValues () 메서드를 호출합니다. 그래서 MyTypes를 MethodParameter로 전달해야합니다. 그런데 어떻게 그 타입을 통과 시켰습니까? 나는 XAML에 네임 스페이스에 대한 참조를 추가하는 등, 다양한 방법을 시도했다 :
<Window.Resources>
<ObjectDataProvider MethodName="GetValues" ObjectType="{x:Type sys:Enum}" x:Key="TipHandlingValues">
<ObjectDataProvider.MethodParameters>
<!-- what goes here? it's totally wrong. -->
<my:MyTypes />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Window.Resources>
거의 아무것도 난이 컴파일 넣어 없습니다. 누구든지이 작은 장애물을 극복하는 방법을 알고 있습니까?
수 있습니다 그 가장 간단하지만 내 DataContext는 내 ViewModel이므로 내 명령 및 기타 콤보 상자를 모두 바인딩하는 방법이므로 적절하지 않다고 생각합니다. 나는 단지 하나의 콤보 박스가 아닌 다른 GUI 요소를 가지고있다. "다른 옵션"에 관해서는, 내가 질문에 게시 한 마크 업이 열거 형에서 값 목록을 생성하는 방법이라고 생각했습니다. – Dave
순수 XAML로 수행 할 방법이 없을 수 있습니다. 일반 C#을 사용하면 훨씬 쉽게 처리 할 수 있습니다. ViewModel에서 MyTypesValues라는 속성을 만들고 그 다음에 바인딩하십시오. ({Binding MyTypesValues}). – Andrey