我想要的只是在资源字典中定义的按钮样式中添加事件处理程序。
ResDict.xaml:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MyProject"
x:Class="MyProject.ResDict" >
//other stuff here
<Style TargetType="Button">
<EventSetter Event="Click" Handler="close_event" />
</Style>
</ResourceDictionary>
ResDict.xaml.cs(&lt; =我手动添加了这个文件)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
namespace MyProject
{
public partial class ResDict : ResourceDictionary
{
public ResDict()
{
//InitializeComponent(); <-- If I uncomment this, the compiler cannot find it
}
private void close_event(object sender, RoutedEventArgs e)
{
//This is what the event handler is intended to be, but the compiler seems to not know it.
//'ResDict' does not contain a definition for 'close_event' and no extension method 'close_event' accepting a first argument of type 'ResDict' could be found (are you missing a using directive or an assembly reference?)
}
}
}
编译器找不到事件处理程序。我发现在obj / Debug文件夹中有两个文件(ResDict.g.cs和ResDict.gics),它们包含public partial class ResDict
,但由于它们不包含在项目中,编译器会想到那些类和我的(ResDict)作为单独的类,我认为这就是为什么找不到InitializeComponent(它在那些文件中定义)的原因。但是我不想包含这些文件,因为它带来了大量的编译时错误。我也不想向它们添加事件处理程序
因为它们是自动生成的文件。
我的问题: 如何/在哪里可以添加事件处理程序?那么InitializeComponent呢?如何告诉编译器它是在某些自动生成文件中定义的?
如果问题不清楚,请告诉我。
答案 0 :(得分:1)
几个小时后,我意识到实际问题是命名空间名称中的一个偷偷摸摸的错误(w而不是W)。那当然是无法生产的。