2012-01-17 8 views
0

私は、ローカライズされた代表文字列を持つ列挙体のメンバーを取り込みたいComboBoxを持っています。私はこれを行うための標準的な方法は、列挙型の値をキーとして、コードをテキストとして、値にして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"の2つのプロパティしかないことがわかります。 このヘルプが必要です。私が誤解した場合は、私に知らせてください。

+0

「DisplayeMemberPath = "Content"」はまさに問題でした。投稿したコードからその行を削除するだけで、完全に機能します。正しい方向に私を指してくれてありがとう! –

関連する問題