是否有人知道为什么我无法在控制模板上设置一个事件??

例如,以下代码行不会编译。它与控制模板中的任何事件都这样做。

<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)
        {
            ...
        }
    }
}
.

(您可能还需要将资源字典的构建操作更改为“页面”,我不记得完全......)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top