Как добавить обработчик событий для управления в datatemplate в словаре ресурсов - PullRequest
16 голосов
/ 07 сентября 2011

У меня есть словарь ресурсов:

<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="wpfUI2.MainWindowEvents">


<DataTemplate
    x:Key="WorkspacesTemplate">
    <TabControl
        x:Name="Tab1"
        IsSynchronizedWithCurrentItem="True"
        ItemsSource="{Binding}"
        ItemTemplate="{StaticResource ClosableTabItemTemplate}"
        Margin="4"/>
</DataTemplate>
...

И я хочу добавить обработчик событий в TabControl. MainWindowEvents - это класс, определенный в файле без других классов:

Namespace wpfUI2
    Public Class MainWindowEvents

    End Class
End Namespace

Когда я иду, чтобы добавить обработчик событий, как

    <TabControl
        x:Name="Tab1"
        IsSynchronizedWithCurrentItem="True"
        ItemsSource="{Binding}"
        ItemTemplate="{StaticResource ClosableTabItemTemplate}"
        Margin="4"
        SelectionChanged=""
    />

и попробуйте щелкнуть между "", чтобы создать событие. Я получаю сообщение об ошибке, в котором говорится, что класс, указанный атрибутом x: Class, должен быть первым в файле. Ну, это так! Странно, когда я создаю обработчик вручную:

Namespace wpfUI2
    Public Class MainWindowEvents
        Public Sub Tab1_SelectionChanged(sender As System.Object, e As System.Windows.Controls.SelectionChangedEventArgs)

        End Sub
    End Class
End Namespace

Все компилируется нормально, но я получаю исключение времени выполнения для window.show

Что я делаю не так?

1 Ответ

9 голосов
/ 07 сентября 2011

Я смог заставить его работать благодаря этому:

Можно ли установить код за словарем ресурсов в WPF для обработки событий?

Я вижу недостающие элементы в вашем коде, сравните с примером.

...