如何在资源字典中的 DataTemplate 中为控件添加事件处理程序。

5 浏览
0 Comments

如何在资源字典中的 DataTemplate 中为控件添加事件处理程序。

我有一个资源字典:



    

...

我想向TabControl添加一个事件处理程序。MainWindowEvents是一个在没有其他类的文件中定义的类:

Namespace wpfUI2

Public Class MainWindowEvents

End Class

End Namespace

当我尝试添加一个事件处理程序时,例如

    

并尝试在""之间点击以创建事件时,我收到一个错误,说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时出现运行时异常。我做错了什么?

0
0 Comments

在WPF中,当我们想要向资源字典中的控件添加事件处理程序时,有时会遇到问题。原因是可能会缺少一些必要的代码,导致事件处理程序无法正常工作。为了解决这个问题,我们可以参考一个Stack Overflow上的解决方案。

解决方法是创建一个资源字典作为用户控件或窗口,并在XAML和CS文件中更改类型。这样可以确保资源字典中的控件可以正常添加事件处理程序。

具体来说,以下是解决方法的步骤:

1. 在资源字典中创建一个用户控件或窗口,例如命名为"MyResourceDictionary"。

2. 在XAML文件中,将根元素的类型从"ResourceDictionary"更改为用户控件或窗口的类型。例如,将""更改为"",其中"local"是指向命名空间的引用。

3. 在CS文件中,将资源字典的基类从"ResourceDictionary"更改为用户控件或窗口的类型。例如,将"class MyResourceDictionary : ResourceDictionary"更改为"class MyResourceDictionary : UserControl"或"class MyResourceDictionary : Window"。

4. 现在,您可以向资源字典中的控件添加事件处理程序,它们应该能够正常工作。

通过按照上述步骤修改代码,您应该能够解决在资源字典中添加事件处理程序时可能遇到的问题。这种方法也可以使资源字典的管理更加方便,并且事件处理程序可以更容易地添加和维护。

0