在将一个WPF项目从.NET Framework迁移到.NET Core时,我在VS2019(v16.3.10
)的XAML设计器中遇到了问题。当我尝试在样式中使用EventSetter
时,它会持续抛出XDG0062
错误。代码可以编译和运行,但是这些错误导致设计器中相关元素被一个带有X的红色圆圈替换,使得UI设计变得困难。相同的XAML在.NET Framework 4.7.2项目中工作正常。
为了追踪问题,我从头开始创建了一个VS minimal项目(WPF .NET Core),这个问题也在这里出现了(请参见下面的错误和代码)。看起来是由于在样式中使用EventSetter
引起的——不幸的是,我不知道原因。谷歌只给出了一个没有解决方案的问题提及,Stack Overflow上有一个关于此错误代码的主题,然而,那里建议的解决方案(删除VS缓存)并没有帮助。删除EventSetter
行可以同时移除两条错误信息。
有人有解决这个问题的建议吗?
完整的错误信息:
Line 9: XDG0062 Non-NULL value required for "EventSetter.Handler"
Line 12: XDG0062 Value cannot be null. (Parameter 'typeDescriptorContext')
XAML:
<Window x:Class="XDG0062_test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:XDG0062_test"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Window.Resources>
<Style TargetType="TextBox">
<Setter Property="Height" Value="30"></Setter>
<Setter Property="Width" Value="130"></Setter>
<EventSetter Event="GotFocus" Handler="TextBox_GotFocus"/>
</Style>
</Window.Resources>
<Grid>
<TextBox HorizontalAlignment="Left" Margin="70,100,0,0"
Text="TextBox" TextWrapping="Wrap" VerticalAlignment="Top"/>
</Grid>
</Window>
C#:
using System.Windows;
namespace XDG0062_test
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void TextBox_GotFocus(object sender, RoutedEventArgs e)
{
MessageBox.Show("Beep");
}
}
}