WPF - ControlTemplate上的事件?
-
28-09-2020 - |
题
是否有人知道为什么我无法在控制模板上设置一个事件??
例如,以下代码行不会编译。它与控制模板中的任何事件都这样做。
<ControlTemplate x:Key="DefaultTemplate" TargetType="ContentControl">
<StackPanel Loaded="StackPanel_Loaded">
</StackPanel>
</ControlTemplate>
.
我正在使用MVVM设计模式,这里的控制位于被添加到应用程序的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)
{
...
}
}
}
.
(您可能还需要将资源字典的构建操作更改为“页面”,我不记得完全......)
不隶属于 StackOverflow