WPF DataTemplate - событие сработало при добавлении нового элемента в коллекцию? - PullRequest
0 голосов
/ 09 ноября 2010

Когда новый элемент добавляется в коллекцию 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, но Дух , который выстрелил только один раз.
  • Я попытался DataTemplate Trigger на RoutedEvent
    FrameWorkElement.Loaded, но я почти уверен, что это не для моей ситуации
  • Я попробовал EventSetter, но этоне совсем так, как я хочу

Я попробовал несколько других вещей, но я не совсем их все помню.

Любые предложения будут с благодарностью!

Ответы [ 2 ]

1 голос
/ 09 ноября 2010

Если я правильно читаю ваш XAML, вы создаете один элемент управления Chart для TabControl и меняете его данные при изменении TabItem?Если это так, вы должны иметь возможность использовать событие SelectionChanged.

Возможно, лучше поместить элемент управления Chart в ItemTemplate, чтобы он автоматически загружал выбранные данные Flights, когда пользователь переключает вкладки или добавляетновый.

1 голос
/ 09 ноября 2010

Ваша коллекция Flights должна иметь тип ObservableCollection <> . Привязка ItemsSource в xaml подпишется на событие CollectionChanged и будет добавлять / удалять вкладки. Что касается вызова метода на диаграмме, имеет ли WindowsFormHost событие Loaded? Потому что для каждой созданной вкладки будет создан новый.

...