2017-08-30 68 views
0

我有一個TabControl的DataContext是空的TabItem的DataTemplate中

<TabControl TabStripPlacement="Left" 
      Grid.Row="1" 
      x:Name="TabControl" 
      ItemsSource="{Binding SomeProperty}" 
      ContentTemplateSelector="{StaticResource SomeDataSelector}"> 
    <TabControl.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Name}"/> 
     </DataTemplate> 
    </TabControl.ItemTemplate> 
</TabControl> 

我在哪裏調用DataTemplateSelector

<UserControl.Resources> 
    <DataTemplate x:Key="DefaultTemplate" > 
     <TextBlock Text="Default" FontSize="72"></TextBlock> 
    </DataTemplate> 
    <DataTemplate x:Key="FirstViewDataTemplate"> 
     <local:FirstView HorizontalAlignment="Left"/> 
    </DataTemplate> 
    <DataTemplate x:Key="SecondViewDataTemplate"> 
     <local:SecondView HorizontalAlignment="Left" DataContext="{Binding}"/> 
    </DataTemplate> 
    <local:SomeDataSelector x:Key="SomeDataSelector" 
          FirstViewDataTemplate="{StaticResource FirstViewDataTemplate}" 
          SecondViewDataTemplate="{StaticResource SecondViewDataTemplate}"/> 
</UserControl.Resources> 

但在DataContext的SecondView即將爲空

我試過元素綁定也沒有幫助

我在想什麼?

+2

我無法重現該問題。我用你的示例代碼和缺少的選擇器創建了應用程序,它工作。你什麼時候看到DataContext爲null?如果它在構造函數中,那麼期望綁定尚未發生。 –

+0

你是對的 這真是太無聊了 控件加載後的DataContext集 而我一直在構造函數中尋找它。 –

回答

0

我無法重現該問題。我用你的示例代碼和缺少的選擇器創建了應用程序,它工作。你什麼時候看到DataContext爲null?如果它在構造函數中,那麼期望綁定尚未發生。

如果您希望在數據上下文ID可用時收到通知,您可以處理DataContextChanged事件。

相關問題