【发布时间】:2018-04-21 19:51:10
【问题描述】:
我目前正在尝试通过声明它是 x:Class 并将 On Click 事件链接到所述类中的函数来向 ResourceDictionary 添加功能。这是一个例子:
还有我的 x:Class 的来源:
using System;
using System.Windows;
namespace VoidwalkerEngine.Editor.Resources.Themes.Styles
{
public partial class VoidwalkerCellBrowserTreeView : ResourceDictionary
{
public VoidwalkerCellBrowserTreeView()
{
InitializeComponent();
}
private void BaseTreeView_NewFolder_Click(object sender, RoutedEventArgs e)
{
Console.WriteLine("Test"); // This should be fired when I click on "New Folder"
}
}
}
单击菜单项后,它应该将“测试”打印到控制台。然而,什么也没有发生。显然,我一定做错了什么。我还在这里找到了一个与我类似的问题:Control event not firing from class linked to resource dictionary wpf
他们的建议是在 .csproj 文件中添加额外的一行,我这样做了:
但是,这仍然不起作用。显然我仍然没有正确链接某些东西,我只是不知道如何从这里开始。 有人知道如何正确地将 ResourceDictionary 与它的 x:Class 链接起来吗? 我的项目没有抛出任何错误,Visual Studio 甚至自动完成了 x:Class 文件中的 BaseTreeView_NewFolder_Click 函数,所以我知道源文件本身附上就好了。
编辑 1: 这是完整的 XAML 资源字典:https://pastebin.com/8UepKGTa
编辑 2: 在测试了一些东西之后,我注意到了一些非常奇怪的东西。显然,我放置在默认构造函数中的任何控制台命令都会被触发,但不会触发任何方法。这是一张图片:
【问题讨论】:
-
是的,我什么都试过了。我不知道为什么这不起作用。在规定的时间过后,我将打开它以获取赏金。
-
投反对票的原因?有什么办法可以改善这个问题吗?
-
如果您在事件处理程序中调用
MessageBox.Show("")会怎样? -
@mm8 感谢您的回复。您的问题与上面提到的结果相同,唯一可以执行的代码是在所述类的构造函数中。没有函数被触发。我还是不知道为什么。
标签: c# wpf resourcedictionary