WPF DataTemplate-将新项添加到集合时激发的事件?
将新项目添加到WPF DataTemplate-将新项添加到集合时激发的事件?,wpf,data-binding,tabcontrol,Wpf,Data Binding,Tabcontrol,将新项目添加到Flights集合时,会将新的TabItem添加到TabControl。添加新选项卡时,我需要调用图表控件上的方法。问题是我无法找出要处理的正确事件 我的XAML如下所示: <TabControl Name="chartControl" ItemsSource="{Binding Flights}"> <TabControl.ItemContainerStyle> <Style TargetType="TabItem">
Flights
集合时,会将新的TabItem
添加到TabControl
。添加新选项卡时,我需要调用图表控件上的方法。问题是我无法找出要处理的正确事件
我的XAML如下所示:
<TabControl Name="chartControl" ItemsSource="{Binding Flights}">
<TabControl.ItemContainerStyle>
<Style TargetType="TabItem">
<Setter Property="Header" Value="{Binding Name}" />
</Style>
</TabControl.ItemContainerStyle>
<TabControl.ContentTemplate>
<DataTemplate>
<WindowsFormHost Name="winHost">
<legacy:Chart></legacy:Chart>
</WindowsFormHost>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
- 我尝试处理
上加载的选项卡Control
, 但那只开过一次枪李>
- 我尝试了一个
DataTemplate
路由事件上的
触发器
但我很确定这不适合我的情况FrameWorkElement.Loaded
- 我试过一个事件设定者但是 没有按照我想要的方式工作 或者
- 我尝试了一个
如有任何建议,将不胜感激 您的
Flights
集合应为类型。xaml中的ItemsSource绑定将订阅其CollectionChanged事件和添加/删除选项卡。至于调用图表上的方法,WindowsFormHost是否有已加载的事件?因为将为创建的每个选项卡创建一个新的选项卡。如果我正确读取了XAML,您是在为TabControl创建一个图表控件,并在TabItem更改时更改其数据吗?如果是,您应该能够使用SelectionChanged
事件
您最好将图表控件放在ItemTemplate中,这样当用户切换选项卡或添加新选项卡时,它会自动加载选定的
航班
数据。我建议将其更改为ObservableCollection,因为添加新项时,列表不会自动更新UI,ObservableCollection类型为List。TabControl的DataContext设置为my ViewModel,它有一个名为Flights的属性,该属性为List,因此我没有CollectionChanged事件。我不认为o(现在,当Flights集合更新时,UI正在更新。将viewmodel的Flights更改为IList,然后可以将Flights列表传递到ObservaleCollection的构造函数中并使用它,因为ObservaleCollection实现了IList,我刚刚检查过,WindowsFormHost确实有一个加载的事件。订阅该列表,并调用图表上的方法。我不认为SelectionChanged是我需要的,因为当加载tabitem时,我需要调用图表控件上的方法:o(在这种情况下,有一个TabItemLoaded事件。为目标类型添加样式{x:type tabitem}
到TabControl.Resources
并使用EventSetter设置加载的事件。另一种方法是将图表控件从TabControl.ContentTemplate
移动到TabControl.ItemTemplate
中,然后在其上运行加载的事件。我想最初我避开了EventSetter,因为它触发了在每个现有选项卡上加载的事件,而不仅仅是新添加的。我想我将对此进行修补,看看是否只能处理新选项卡。谢谢!!:)