2011-01-19 118 views
1

我有一個DataTemplate,我用它來顯示TabControl中的一個類的一部分(它是一個TabItem的DataTemplate)。這個DataTemplate有多個組合框,向用戶顯示各種屬性值。WPF Combobox清除

我有一個組合框,允許用戶在TabControl綁定到的對象之間切換。

如果對象的屬性不爲空,那麼它們在與它們綁定的組合框中被選中(如預期的那樣)。

如果我切換到一個具有null屬性的對象,那麼在ComboBox中沒有選擇任何項(也如預期的那樣)。

但是,如果我切換回屬性中具有值的對象,則根本不會顯示它。

我不知道我在做什麼錯。

這裏是爲我有...我只打算張貼1個組合框,因爲它們都扮演同樣的方式問題DataTemplate中的XAML標記:

<DataTemplate x:Key="OptionalInfoTemplate"> 
    <ScrollViewer> 
     <StackPanel> 
      <StackPanel Orientation="Horizontal" Margin="0,5,0,0"> 
       <Label Content="Optional Item 1:"></Label> 
       <ComboBox ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TabControl}}, Path=DataContext.OptionalItems}" 
          SelectedItem="{Binding Path=OptionalItem1}"> 
        <ComboBox.ItemTemplate> 
         <DataTemplate> 
          <TextBlock Text="{Binding Name}"></TextBlock> 
         </DataTemplate> 
        </ComboBox.ItemTemplate> 
       </ComboBox> 
      </StackPanel> 

      <!-- more controls --> 
     </StackPanel> 
    </ScrollViewer> 
</DataTemplate x:Key="OptionalInfoTemplate"> 

感謝您時間和幫助!

-Frinny

+0

「沒有被正確地顯示它。」 - 你究竟發生了什麼? – 2011-01-19 16:39:04

回答

0

我無意中解決了這個問題。 我改變了組合框的ItemsSource屬性綁定來自:

"{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TabControl}}, Path=DataContext.OptionalItems}" 

要:

"{Binding RelativeSource={RelativeSource TemplatedParent},Path=DataContext.OptionalItems}" 

-Frinny