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
。每当您更改选项卡时就会触发此命令