WPF绑定、C#泛型和可空类型导致Visual Studio Designer中出现未处理的异常
我对WPF项目的Visual Studio designer以及使用泛型绑定到类型和指定可为null的类型作为泛型类型的组合存在问题 我试图构建一个问题的最小示例: XAML:WPF绑定、C#泛型和可空类型导致Visual Studio Designer中出现未处理的异常,c#,wpf,generics,visual-studio-2017,nullable,C#,Wpf,Generics,Visual Studio 2017,Nullable,我对WPF项目的Visual Studio designer以及使用泛型绑定到类型和指定可为null的类型作为泛型类型的组合存在问题 我试图构建一个问题的最小示例: XAML: 代码隐藏: using System.Windows; namespace TestWpfApp { public class TestGeneric<T> { public TestGeneric(T value) { Value
代码隐藏:
using System.Windows;
namespace TestWpfApp
{
public class TestGeneric<T>
{
public TestGeneric(T value)
{
Value = value;
}
public T Value { get; }
}
public class TestViewModel
{
public TestGeneric<double?> TestText { get; } = new TestGeneric<double?>(123.456);
public double? TestTextValue => TestText.Value;
}
public partial class MainWindow : Window
{
public MainWindow()
{
DataContext = new TestViewModel();
InitializeComponent();
}
}
}
使用System.Windows;
命名空间TestWpfApp
{
公共类TestGeneric
{
公共测试通用(T值)
{
价值=价值;
}
公共T值{get;}
}
公共类TestViewModel
{
公共TestGeneric TestText{get;}=newtestgeneric(123.456);
public double?TestTextValue=>TestText.Value;
}
公共部分类主窗口:窗口
{
公共主窗口()
{
DataContext=新的TestViewModel();
初始化组件();
}
}
}
设计器使用此代码失败,并显示以下错误消息:
XAML代码中注释掉的行在设计器窗口中没有给出错误
在运行项目时,这两个版本实际上都可以工作。失败的只有设计师
有人知道问题可能是什么吗?设计时表达式是一个非常实用的技巧,与IDE相关,它对运行时没有影响,只影响设计时。适用于Visual Studio 2010及更高版本
在XAML中实例化类型需要默认构造函数。
选项IsDesignTimeCreatable=True告诉设计器可以通过默认构造函数创建指定的类。通过这种方式,可以为UI提供示例数据
d:DataContext="{d:DesignInstance local:TestViewModel , IsDesignTimeCreatable=True }"
Yong Lu设计时表达式是一个非常实用的技巧,与IDE相关,它对运行时没有影响,只影响设计时。适用于Visual Studio 2010及更高版本
在XAML中实例化类型需要默认构造函数。
选项IsDesignTimeCreatable=True告诉设计器可以通过默认构造函数创建指定的类。通过这种方式,可以为UI提供示例数据
d:DataContext="{d:DesignInstance local:TestViewModel , IsDesignTimeCreatable=True }"
陆勇陆勇你好。这里的问题纯粹是设计时间。应用程序在两种情况下都在运行时工作。选项IsDesignTimeCreatable=True不能解决Visual Studio Designer中未处理异常的问题。我已经做了一个测试,它运行良好。“设计器进程意外终止!”当我使用选项IsDesignTimeCreatable=True时,将消失。我使用Visual Studio 2019版本16.2.3Hi Yong Lu。我刚刚在Visual Studio Professional 2019中进行了测试。设计器仍然失败,但现在出现System.ArgumentNullException。。问题似乎与IsDesignTimeCreatable属性无关,但与其他内容有关。您可以转到Visual Studio报告此问题。嗨,Yong Lu。这里的问题纯粹是设计时间。应用程序在两种情况下都在运行时工作。选项IsDesignTimeCreatable=True不能解决Visual Studio Designer中未处理异常的问题。我已经做了一个测试,它运行良好。“设计器进程意外终止!”当我使用选项IsDesignTimeCreatable=True时,将消失。我使用Visual Studio 2019版本16.2.3Hi Yong Lu。我刚刚在Visual Studio Professional 2019中进行了测试。设计器仍然失败,但现在出现System.ArgumentNullException。。似乎该问题与IsDesignTimeCreatable属性无关,而是与其他问题有关。您可以转到Visual Studio并报告此问题。