<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:CustomCalc">
<Style TargetType="{x:Type local:CustomControl1}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:CustomControl1}">
<TextBlock Text="welcome" Height="50" Width="150" MouseDown=""/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
在上面的程序中,(在自定义控件库中的程序中锻炼) 我正在尝试更改控件textblock =&gt;按钮。(文本块充当按钮功能) 所以我尝试向文本块添加一个事件,它会给出一条错误消息“确保事件失败”, 这个文件名是“Generic.xaml”所以我添加了一个类“Generic.xaml.cs”,但显示相同的错误。 请提前解释,请解释为什么会发生以及如何解决它。
答案 0 :(得分:6)
您需要添加x:Class
属性以支持XAML文件中的事件处理程序。所以你的Generic.xaml
应该是这样的:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:CustomCalc"
x:Class="CustomCalc.Generic">
<Style TargetType="{x:Type local:CustomControl1}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:CustomControl1}">
<TextBlock Text="welcome" Height="50" Width="150" MouseDown="TextBlock_MouseDown"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
至于Generic.xaml.cs
:
namespace CustomCalc
{
public partial class Generic : ResourceDictionary
{
private void TextBlock_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
}
}
}
另外,请不要忘记在ResourceDictionary
文件中合并App.Xaml
:
<Application.Resources>
<ResourceDictionary >
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/CustomCalc;component/Generic.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
答案 1 :(得分:3)
在我使用 Visual Studio 2015 和WPF项目的情况下,Visual Studio重新启动后错误消失了。
答案 2 :(得分:0)
在我的情况下,XAML文件(App.xaml是特定的)在我尝试创建事件时在共享项目中,并且在此线程的错误主题下卡住了几分钟。
我的解决方案是从共享项目中排除XAML文件及其XAML.cs文件,然后在每个依赖平台项目中链接(不复制!)它。
有关链接过程的图形可视化,请参阅以下GIF: Linking files between projects
来源: http://geertvanhorrik.com/2015/04/01/fix-for-wpf-images-and-shared-projects/
答案 3 :(得分:0)
通过关闭并重新打开导致错误的xaml
文档(Visual Studio 2017)解决了我的问题。我的xaml
也在共享项目中。
如果需要,重启Visual Studio也对我有帮助。
答案 4 :(得分:0)
当前在VS 2017 Enterprise中运行Xamarin Forms,并出现了此问题。
就我而言,它仅在尝试将事件处理程序添加到新定义的xaml Button时发生。取消调试并再次尝试解决此问题。