对于TabItem DataTemplate,DataContext为null

时间:2017-08-30 05:13:24

标签: c# wpf

我有一个Tabcontrol

<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>

但SecondView的DataContext将为null

我也尝试了元素绑定,但没有帮助

我缺少什么?

1 个答案:

答案 0 :(得分:0)

我无法重现这个问题。我使用您的示例代码和缺少的选择器创建了应用程序并且它工作正常。你什么时候看到DataContext为null?如果它在构造函数中,那么预期尚未发生绑定。

如果您希望在数据上下文ID可用时收到通知,则可以处理dic_extr[dic.keys()[i]] = a[:]事件。