C# WPF TabControl未触发未聚焦儿童的加载事件

C# WPF TabControl未触发未聚焦儿童的加载事件,c#,wpf,data-binding,C#,Wpf,Data Binding,我有一个TabControl,它绑定了ItemsSource属性。它绑定到一个可观察的集合。当我向集合中添加一个项目时,会正确创建选项卡,但只有第一个选项卡会加载其Grid\u事件。我猜这是因为它是集中的。当一个新选项卡打开时,我需要初始化它,它包含一个需要引用的控件 <TabControl x:Name="tabSessions" ItemsSource="{Binding Sessions}" SelectedIndex

我有一个
TabControl
,它绑定了
ItemsSource
属性。它绑定到一个
可观察的集合
。当我向集合中添加一个项目时,会正确创建选项卡,但只有第一个选项卡会加载其
Grid\u
事件。我猜这是因为它是集中的。当一个新选项卡打开时,我需要初始化它,它包含一个需要引用的控件

<TabControl x:Name="tabSessions" 
                ItemsSource="{Binding Sessions}"
                SelectedIndex="0"
                BorderThickness="0"
                Padding="0,0,0,0">
    <TabControl.ItemTemplate>
        <DataTemplate DataType="{x:Type vm:MyViewModel}">
            <TextBlock Margin="4,4,16,4" Text="{Binding Name}"></TextBlock>
        </DataTemplate>
    </TabControl.ItemTemplate>
    <TabControl.ContentTemplate>
        <DataTemplate>
            <Grid Loaded="Grid_Loaded">
                <!-- View here -->
            </Grid>
        </DataTemplate>
    </TabControl.ContentTemplate>
</TabControl>


是否存在可用于初始化此的事件?我还需要设置DataContext,并初始化视图。c#

选项卡重用
数据模板
,这就是为什么您可能只看到一个
加载的
事件。它只是第一次加载,然后在切换选项卡时重新使用。仅更改绑定的内容

与其听
网格上加载的
,不如听
DataContextChanged
,每次
DataContext
设置为新对象时,它都会告诉您

切换选项卡时,
DataContext
将更改。当前选项卡将被设置为
DataTemplate
DataContext
(通过扩展
网格


使用
DataTemplate
时,您假设视图将是相同的,但内容将不同。如果情况并非如此,并且视图会根据内容的不同而有所不同,则可能需要使用
DataTemplateSelector
。这将允许您定义多个
DataTemplate
s,并根据当前
DataContext
选择其中一个要使用。您可以阅读

中的
DataTemplateSelector
,我曾想过使用DataContextChanged事件,但我需要一个在选项卡打开时触发的事件。
DataTemplate
中的
网格
用于所有选项卡,当您切换选项卡时,
网格的
DataContext
将更改,事件将被触发。或者,您可以使用
选项卡Control
本身上的
SelectionChanged
。每当您更改选项卡时就会触发此命令