在.NET Core WPF应用程序中使用EventSetter时出现Visual Studio XAML设计器错误XDG0062

7uhlpewt  于 2021-06-18  发布在  .NET
关注(0)|答案(2)|浏览(136)

在将WPF项目从.NET Framework移植到.NET Core时,我在VS 2019 v16.3.10中遇到了XAML设计器问题。当我尝试在样式中使用EventSetter时,它一直抛出XDG0062错误。代码编译和运行良好,但错误导致设计器中的相关元素被替换为带X的红色圆圈。同样的XAML在. NETx 1 m3n1x项目中工作得很好。
为了追踪这个问题,我做了一个VS最小项目(WPF .NET核心)从头开始,问题也出现在这里(见下面的错误和代码)。它似乎是由在样式中使用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");
        }
    }
}
mrwjdhj3

mrwjdhj31#

我在VS 2019中通过删除文件夹.vs/$(SolutionName)/DesignTimeBuild解决了这个问题,这样我就可以保留VS配置/资源管理器/标签,删除整个.vs时会丢失这些文件夹。
设计版本已损坏,需要更新。这将强制Visual Studio使用全新的设计版本。

rggaifut

rggaifut2#

微软已经发布了评论中提到的修复程序。我可以确认我的问题确实在VS 2019 16. 5. 0之前得到了解决

相关问题