【发布时间】:2019-11-26 13:59:01
【问题描述】:
在将 WPF 项目从 .NET Framework 移植到 .NET Core 时,我在 VS2019 v16.3.10 中遇到了 XAML-Designer 的问题。当我尝试在样式中使用EventSetter 时,它不断抛出XDG0062 错误。代码编译并运行良好,但错误导致设计器中的相关元素被替换为带有 X 的红色圆圈,使得 UI 设计相当困难。同样的 XAML 在 .NET framework 4.7.2. 项目中也能正常工作。
为了追查问题,我从头开始制作了一个 VS 最小项目(WPF .NET Core),问题也出现在这里(请参阅下面的错误和代码)。这似乎是由在样式中使用 EventSetter 引起的 - 不幸的是我不知道为什么。谷歌在没有解决方案的情况下提到了这个问题,堆栈溢出有一个关于这个错误代码的主题,但是,那里建议的解决方案(删除 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");
}
}
}
【问题讨论】:
-
我可以重现此错误消息并且它可以构建和运行,但 'Handler="TextBox_GotFocus"' 不起作用。我试着找一些文件来分析这个。但是,不幸的是,我找不到解决此错误消息的合适方法。所以,我建议你可以去Developer Community NET/Visual Studio 报告你的问题。
-
谢谢。我听从了您的建议并报告了它,该问题将得到解决:此问题的修复已在内部实施并正在准备发布我会在它发布时更新。
-
@BBokisch 你有这个问题的链接吗?在 VS16.8.5 中仍然存在
-
stackoverflow.com/questions/52606565/… 这个主题中的解决方案对我有用。
标签: wpf visual-studio xaml designer eventsetter