WPF DataTemplate - 将新项目添加到Collection时触发的事件?

时间:2010-11-09 14:16:27

标签: wpf data-binding tabcontrol

将新项目添加到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但我很确定这不适合我的情况
  • 我试过一个EventSetter但是那个 没有像我想要的那样工作 任

我尝试了其他一些事情,但我并不完全记得它们。

任何建议都将不胜感激!

2 个答案:

答案 0 :(得分:1)

您的Flights集合应为ObservableCollection<>类型。 xaml中的ItemsSource绑定将订阅其 CollectionChanged 事件并添加/删除选项卡。至于在Chart上调用方法,WindowsFormHost是否有一个Loaded事件?因为将为每个创建的选项卡创建一个新选项。

答案 1 :(得分:1)

如果我正确地读取您的XAML,您正在为TabControl创建一个Chart控件并在TabItem更改时更改其数据?如果是这样,您应该能够使用SelectionChanged事件。

最好将Chart控件放在ItemTemplate中,以便在用户切换标签或添加新标签时自动加载选定的Flights数据。