Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF绑定、C#泛型和可空类型导致Visual Studio Designer中出现未处理的异常_C#_Wpf_Generics_Visual Studio 2017_Nullable - Fatal编程技术网

WPF绑定、C#泛型和可空类型导致Visual Studio Designer中出现未处理的异常

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

我对WPF项目的Visual Studio designer以及使用泛型绑定到类型和指定可为null的类型作为泛型类型的组合存在问题

我试图构建一个问题的最小示例:

XAML:


代码隐藏:

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并报告此问题。