WPF - События на ControlTemplate?

Кто-либо знает, почему я не могу установить событие на шаблоне управления??

Например, следующая строка кода не скомпилирует. Это делает это с любыми событиями в шаблоне управления.

<ControlTemplate x:Key="DefaultTemplate" TargetType="ContentControl">
   <StackPanel Loaded="StackPanel_Loaded">

   </StackPanel>
</ControlTemplate>

Я использую шаблон разработки MVVM, и управление здесь расположено в ResourceDictionary, который добавляется к MergedDictionaries приложения.

9
задан Rachel 23 July 2010 в 08:21
поделиться

1 ответ

Кто-нибудь знает, почему я не могу установить событие в шаблоне элемента управления ??

На самом деле, вы можете ... Но где вы ожидаете, что будет определен обработчик событий? В ResourceDictionary нет кода программной части, поэтому нет места для размещения кода обработчика событий. Однако вы можете создать класс для словаря ресурсов и связать его с атрибутом x: Class :

<ResourceDictionary x:Class="MyNamespace.MyClass"
                    xmlns=...>

    <ControlTemplate x:Key="DefaultTemplate" TargetType="ContentControl">
       <StackPanel Loaded="StackPanel_Loaded">

       </StackPanel>
    </ControlTemplate>

Код C #:

namespace MyNamespace
{
    public partial class MyClass : ResourceDictionary
    {
        void StackPanel_Loaded(object sender, RoutedEventArgs e)
        {
            ...
        }
    }
}

(вам также может потребоваться изменить действие сборки для ресурсный словарь на "Страницу", точно не помню ...)

11
ответ дан 3 November 2019 в 00:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: