将新项目添加到Flights
集合后,新TabItem
会添加到TabControl
。添加新选项卡时,我需要在Chart控件上调用一个方法。问题是我无法弄清楚要处理的正确事件。
我的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>
Loaded
上的TabControl
,
但 duh 只会被解雇一次。 DataTemplate
Trigger
上的RoutedEvent
FrameWorkElement.Loaded
但我很确定这不适合我的情况我尝试了其他一些事情,但我并不完全记得它们。
任何建议都将不胜感激!
答案 0 :(得分:1)
您的Flights
集合应为ObservableCollection<>类型。 xaml中的ItemsSource绑定将订阅其 CollectionChanged 事件并添加/删除选项卡。至于在Chart上调用方法,WindowsFormHost是否有一个Loaded事件?因为将为每个创建的选项卡创建一个新选项。
答案 1 :(得分:1)
如果我正确地读取您的XAML,您正在为TabControl创建一个Chart控件并在TabItem更改时更改其数据?如果是这样,您应该能够使用SelectionChanged
事件。
最好将Chart控件放在ItemTemplate中,以便在用户切换标签或添加新标签时自动加载选定的Flights
数据。