2011-02-23 2 views
2

ObjectDataProvider를 사용하여 Enumeration에 바인딩 된 ItemsSource가있는 콤보 상자가 있고 해당 SelectedItem 속성이 비즈니스 개체의 속성에 바인딩되어 있습니다. 어떤 이유로 그것은 SelectedItem first와 ItemsSource 두 번째를 바인딩하므로 businessobject 속성에서 내 기본값을 덮어 씁니다. 어떤 아이디어가 왜 그리고 어쩌면 수정 되었습니까? 미리 감사드립니다.WPF ComboBox 열거 형에 바인딩

XAML은 :

<CollectionViewSource x:Key="Units"> 
    <CollectionViewSource.Source> 
      <ObjectDataProvider MethodName="GetNames" ObjectType="{x:Type sys:Enum}"> 
       <ObjectDataProvider.MethodParameters> 
        <x:Type TypeName="BO:Unit"/> 
       </ObjectDataProvider.MethodParameters> 
      </ObjectDataProvider> 
    </CollectionViewSource.Source> 
</CollectionViewSource> 

<ComboBox Grid.Column="1" HorizontalAlignment="Right" Width="80" 
      ItemsSource="{Binding Source={StaticResource Units}}" 
      SelectedItem="{Binding Path=Unit}"/> 
+2

이것이 도움이 될 수 있습니다 : [WPF ObjectDataProvider - ComboBox에 바인딩 열거] (http://www.codearsenal.net/2012/11/wpf-objectdataprovider-binding-enum-to-combobox.html) –

답변

0

나는 코드를 시도하고 내가 바인딩의 순서가 문제라고 생각하지 않습니다 잘 작동합니다. 한가지 주목할 점은 ObjectDataProvider의 MethodName으로 GetNames을 사용하고 있으므로 ComboBox ItemsSource는 열거 형이 아니고 열거 형이 아닌 Unit입니다. 이 의도 인 경우 속성 UnitGetNamesGetValues에이 열거 형의 속성을 위해 일하겠습니다 변경하는 경우 예

public class NamesViewModel 
{ 
    public NamesViewModel(string unit) 
    { 
     Unit = unit; 
    } 
    public string Unit 
    { 
     get; 
     set; 
    } 
} 

string

유형을 사용해야합니다 Unit

public class ValuesViewModel 
{ 
    public ValuesViewModel(Unit unit) 
    { 
     Unit = unit; 
    } 
    public Unit Unit 
    { 
     get; 
     set; 
    } 
} 
+0

나 너무 오랫동안 이것을 디버깅하려고 노력했다. 고맙습니다. 지금은 완벽하게 작동합니다. –