2012-01-17 3 views
0

ComboBox에 현지화 된 대표 문자열이있는 열거 형 멤버를 채우고 싶습니다. 이 작업을 수행하는 표준 방법은 enum 값을 키와 텍스트로 사용하여 코드 비하인드로 사전을 만든 다음 ItemsSource를 설정하는 것입니다. 그렇다면 내 섹시한 MarkupExtension을 사용할 수 없게됩니다. 그래서, 저는 이것을 XAML에서하고 싶습니다. 나는 그것이 쉬울 것이라고 생각했다. 여기에 내가 무엇을 가지고 :XAML에 지역화 할 수있는 ComboBoxItems가 지정된 ComboBox

 <ComboBox x:Name="cmbNewTabPos" 
      DisplayMemberPath="Content" 
      SelectedValue="{Binding Path=NewTabPosition}" 
      SelectedValuePath="Tag"> 
      <ComboBoxItem 
       Content="{qt:Resx Key=SomeKey, Index=0}" 
       Tag="{x:Static qt:TabPos.Left}"/> 
      <ComboBoxItem 
       Content="{qt:Resx Key=SomeKey, Index=1}" 
       Tag="{x:Static qt:TabPos.Right}"/> 
      <ComboBoxItem 
       Content="{qt:Resx Key=SomeKey, Index=2}" 
       Tag="{x:Static qt:TabPos.Leftmost}"/> 
      <ComboBoxItem 
       Content="{qt:Resx Key=SomeKey, Index=3}" 
       Tag="{x:Static qt:TabPos.Rightmost}"/> 
     </ComboBox> 

거의 작동; 드롭 다운이 올바르게 채워지고 바인딩이 작동하며 드롭 다운을 풀 때 선택된 값을 볼 수 있지만 콤보 상자의 상자 부분은 내가 무엇을해도 상관 없습니다. 여기서 내가 뭘 잘못하고 있니?

답변

3

이 작은 예제를 작성하면 정상적으로 작동합니다.

<Window x:Class="MainWindowCommandBinding.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525"> 
<Grid> 
    <Grid.Resources > 
     <Point x:Key="1_2" X="1" Y="2"/> 
     <Point x:Key="1_3" X="1" Y="3"/> 
     <Point x:Key="1_4" X="1" Y="4"/> 
     <Point x:Key="1_5" X="1" Y="5"/> 
    </Grid.Resources> 
    <ComboBox x:Name="cmbNewTabPos" 
     DisplayMemberPath="Y" 
     SelectedValuePath="Tag" 
     SelectedValue="1" 
     Margin="0,12,0,0" HorizontalAlignment="Left" Width="135" Height="37" VerticalAlignment="Top"> 
     <ComboBoxItem Content="{StaticResource ResourceKey=1_2}" Tag="1"/> 
     <ComboBoxItem Content="{StaticResource ResourceKey=1_3}" Tag="2"/> 
     <ComboBoxItem Content="{StaticResource ResourceKey=1_4}" Tag="3"/> 
     <ComboBoxItem Content="{StaticResource ResourceKey=1_5}" Tag="4"/> 
    </ComboBox> 
</Grid> 

내가 제대로 DisplayeMemberPath="Content"를 사용하지 않을 생각합니다. 이 값은 선택한 객체에서 표시 할 값을 지정하는 데 사용됩니다. 선택한 개체는 선택한 ComboBoxItem이 아니지만 선택한 ComboBoxItem의 Content 속성에있는 개체입니다. 하지만 귀하의 코드에서 ComboBoxItems의 객체에는 "Key""Index"이라는 두 개의 속성 만 있음을 볼 수 있습니다. 도움이 되길 바랍니다. 내가 잘못 이해하면 알려주세요.

+0

'DisplayeMemberPath = "Content"가 정확히 문제였습니다. 게시 한 코드에서 해당 줄을 제거하면 완벽하게 작동합니다. 저를 올바른 방향으로 가리켜 주셔서 감사합니다! –