下面我将介绍如何重现我收到的错误.它在VS 2010,2012和2013中表现相同.如下所示,将其分解为多个项目非常重要.
重现错误的步骤:
创建解决方案.
创建一个名为Common的C#类库,其中包含一个名为Handler.cs的文件:
using System;
namespace Common
{
public delegate void Handler(object sender, EventArgs args);
}
Run Code Online (Sandbox Code Playgroud)创建一个名为MyControlLibrary的WPF用户控件库项目,引用Common.在其中,创建一个名为MyControl.xaml的用户控件.
MyControl.xaml:
<UserControl x:Class="ControlNamespace.MyControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
</Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
MyControl.xaml.cs:
using System.Windows.Controls;
using Common;
namespace ControlNamespace
{
public partial class MyControl : UserControl
{
public MyControl()
{
InitializeComponent();
}
public event Handler MyEvent;
}
}
Run Code Online (Sandbox Code Playgroud)创建一个名为MyWpfApplication的WPF应用程序项目,引用Common和MyControlLibrary.在其中,创建WindowNamespace.Common.cs以及一个名为MyWindow.xaml的窗口.
WindowNamespace.Common.cs:
namespace WindowNamespace.Common
{
}
Run Code Online (Sandbox Code Playgroud)
MyWindow.xaml:
<Window x:Class="WindowNamespace.MyWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:c="clr-namespace:ControlNamespace;assembly=WpfControlLibrary1"
Title="MyWindow" Height="300" Width="300">
<Grid>
<c:MyControl MyEvent="MyControl_MyEvent" />
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
MyWindow.xaml.cs: …