Кто-либо знает, почему я не могу установить событие на шаблоне управления??
Например, следующая строка кода не скомпилирует. Это делает это с любыми событиями в шаблоне управления.
<ControlTemplate x:Key="DefaultTemplate" TargetType="ContentControl">
<StackPanel Loaded="StackPanel_Loaded">
</StackPanel>
</ControlTemplate>
Я использую шаблон разработки MVVM, и управление здесь расположено в ResourceDictionary, который добавляется к MergedDictionaries приложения.
Кто-нибудь знает, почему я не могу установить событие в шаблоне элемента управления ??
На самом деле, вы можете ... Но где вы ожидаете, что будет определен обработчик событий? В 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)
{
...
}
}
}
(вам также может потребоваться изменить действие сборки для ресурсный словарь на "Страницу", точно не помню ...)