开发者

WPF DataTemplate - Event fired when a new item is added to Collection?

开发者 https://www.devze.com 2023-01-24 18:20 出处:网络
When a new item is added to the Flights collection a new TabItem is added to the TabControl. When a new tab is added, I need to call a method on the Chart control.The problem is I can\'t figure out th

When a new item is added to the Flights collection a new TabItem is added to the TabControl. When a new tab is added, I need to call a method on the Chart control. The problem is I can't figure out the right event to handle.

My XAML looks something like the following:

<TabControl Name="chartControl" ItemsSource="{Binding Flights}">
    <TabControl.ItemContainerStyle>
        <Style TargetType="TabItem">
            <Setter Property="Header" Value="{Binding Name}" />
        </Style>
    </TabControl.ItemContaine开发者_Python百科rStyle>
    <TabControl.ContentTemplate>
        <DataTemplate>
            <WindowsFormHost Name="winHost">
                <legacy:Chart></legacy:Chart>
            </WindowsFormHost>
        </DataTemplate>
    </TabControl.ContentTemplate>
</TabControl>
  • I tried handling the Loaded on the TabControl, but duh that's only fired once.
  • I attempted a DataTemplate Trigger on the RoutedEvent

    FrameWorkElement.Loaded but I'm pretty sure that's not meant for my situation

  • I tried an EventSetter but that didn't quite work the way I want either

I attempted a few other things, but I don't quite remember them all.

Any suggestions would be greatly appreciated!


If I'm reading your XAML correctly, you are creating a single Chart control for the TabControl and changing its data when the TabItem changes? If so, you should be able to use the SelectionChanged event.

You might be better off putting your Chart control in the ItemTemplate so it automatically loads the selected Flights data when the user switches tabs or adds a new one.


Your Flights collection should be of type ObservableCollection<>. The ItemsSource binding in xaml will subscribe to its CollectionChanged event and add/remove tabs. As for calling the method on the Chart, does the WindowsFormHost have a Loaded event? Because a new one will be created for each tab that's created.

0

精彩评论

暂无评论...
验证码 换一张
取 消