11

在将 WPF 项目从 .NET Framework 移植到 .NET Core 时,我在 VS2019 中遇到了 XAML-Designer 的问题v16.3.10XDG0062当我尝试EventSetter在样式中使用时,它会不断抛出错误。代码编译并运行良好,但错误导致设计器中的相关元素被替换为带有 X 的红色圆圈,使得 UI 设计相当困难。相同的 XAML 在 .NETframework 4.7.2.项目中运行良好。

为了追查问题,我从头开始制作了一个 VS 最小项目(WPF .NET Core),问题也出现在这里(请参阅下面的错误和代码)。这似乎是由使用EventSetterin 样式引起的 - 不幸的是我不知道为什么。谷歌在没有解决方案的情况下提到了这个问题,堆栈溢出有一个关于这个错误代码的主题,但是,那里建议的解决方案(删除 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");
        }
    }
}
4

2 回答 2

8

我通过删除文件夹解决了这个问题.vs/$(SolutionName)/DesignTimeBuild,所以我可以保留 VS 配置/资源管理器/选项卡,删除整个.vs.

于 2021-04-08T01:34:52.247 回答
0

微软已经发布了评论中提到的修复程序。我可以确认我的问题确实从 VS 2019 16.5.0 开始得到解决

于 2020-03-17T13:05:36.693 回答