2012-01-17 56 views
0

我有一個ComboBox,我想用本地化的代表字符串填充枚舉的成員。我知道執行此操作的標準方法是在代碼隱藏中將枚舉值設置爲鍵並將文本設置爲值,然後將ItemsSource設置爲該值。但後來我無法使用我的性感MarkupExtension。所以,我想在XAML中這樣做。我認爲這很容易,這是我有什麼:在XAML中指定的可本地化的ComboBoxItems的組合框

 <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」'正是這個問題。只是從我發佈的代碼中刪除該行使其完美工作。感謝您指點我正確的方向! – 2012-01-18 07:02:43