Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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
C# XAML设计器没有';不显示自定义窗口_C#_Wpf_Xaml_Visual Studio 2015 - Fatal编程技术网

C# XAML设计器没有';不显示自定义窗口

C# XAML设计器没有';不显示自定义窗口,c#,wpf,xaml,visual-studio-2015,C#,Wpf,Xaml,Visual Studio 2015,我有一个从自定义窗口继承的WPF窗口。它运行正常,但VS designer显示它时却像默认的空窗口一样 自定义窗口代码: using System.Windows; using System.Windows.Media; namespace WpfApplication2 { public class CustomWindow : Window { public CustomWindow() { Background =

我有一个从自定义窗口继承的WPF窗口。它运行正常,但VS designer显示它时却像默认的空窗口一样

自定义窗口代码:

using System.Windows;
using System.Windows.Media;

namespace WpfApplication2
{
    public class CustomWindow : Window
    {
        public CustomWindow()
        {
            Background = new SolidColorBrush(Colors.Red);
        }
    }
}
MainWindow.xaml

<local:CustomWindow x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:WpfApplication2"
        Title="MainWindow" Height="350" Width="525">

</local:CustomWindow>

设计师:

预期结果:


Visual Studio和Blend中的XAML设计器不一定尊重直接在代码中设置的任何依赖项属性(特别是在构造函数中),而是希望这些属性仅在XAML中设置,这是在设计时使用依赖项系统的标准方法。当然,如果您愿意,所有内容都可以在代码中设置,但是当使用XAML设计器时,您无法保证与在运行的应用程序中看到的行为相同。 此外,如果要在代码中设置依赖项属性,则需要非常小心设置它们的方式,因为可能会破坏最终在这些属性上设置的任何绑定

无论如何,获得所需结果的更好方法是在XAML中设置颜色,如下所示

<local:CustomWindow x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:WpfApplication2"
        Title="MainWindow" Height="350" Width="525" Background="Red">

</local:CustomWindow>

Visual Studio和Blend中的XAML设计器不一定尊重直接在代码中设置的任何依赖项属性(特别是在构造函数中),而是希望这些属性仅在XAML中设置,这是在设计时使用依赖项系统的标准方式。当然,如果您愿意,所有内容都可以在代码中设置,但是当使用XAML设计器时,您无法保证与在运行的应用程序中看到的行为相同。 此外,如果要在代码中设置依赖项属性,则需要非常小心设置它们的方式,因为可能会破坏最终在这些属性上设置的任何绑定

无论如何,获得所需结果的更好方法是在XAML中设置颜色,如下所示

<local:CustomWindow x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:WpfApplication2"
        Title="MainWindow" Height="350" Width="525" Background="Red">

</local:CustomWindow>


您缺少
InitializeComponent()
没有这样的函数,因为
CustomWindow
类不包含XAML。而且无论如何都不可能从包含XAML标记的窗口继承类?什么版本的Windows?VS 2015(在标签中提到),Windows 10(应该不重要)我确信这是XAML设计器的一个缺陷/限制。我尝试了我知道的所有方法来设置子类背景(C#,XAML,Themes\Generic.XAML)。所有这些都在运行时工作。在设计时没有。Metro是一个主题库。它们是Window的子类,并且遇到了这个问题(我与作者聊天)。您缺少
InitializeComponent()
没有这样的函数,因为
CustomWindow
类不包含XAML。而且无论如何都不可能从包含XAML标记的窗口继承类?什么版本的Windows?VS 2015(在标签中提到),Windows 10(应该不重要)我确信这是XAML设计器的一个缺陷/限制。我尝试了我知道的所有方法来设置子类背景(C#,XAML,Themes\Generic.XAML)。所有这些都在运行时工作。在设计时没有。Metro是一个主题库。它们是Window的子类,它们遇到了这个问题(我和作者聊过)。您可能没有注意到
MainWindow
CustomWindow
是两个不同的类。如果CustomWindow类为空,则没有必要使用它。我想拥有一些基本窗口类并从中继承所有其他窗口。不可能从已经有XAML代码的窗口继承,因此它必须是C#only。是的,我注意到了-当然,但您需要XAML设计器的解决方案-顺便说一句,您可以有一个自定义窗口类,具有自己的样式和模板,因此,如果您对简单的解决方案不感兴趣,那么请尝试投入一些精力并创建自己的完整实现将代码从基类移动到每个子类会破坏继承的整个目的。我也尝试将此代码移动到单独的样式,但也不起作用,因为如果没有代码隐藏,则无法应用此样式。您可能没有注意到
MainWindow
CustomWindow
是两个不同的类。如果CustomWindow类为空,则没有必要使用它。我想拥有一些基本窗口类并从中继承所有其他窗口。不可能从已经有XAML代码的窗口继承,因此它必须是C#only。是的,我注意到了-当然,但您需要XAML设计器的解决方案-顺便说一句,您可以有一个自定义窗口类,具有自己的样式和模板,因此,如果您对简单的解决方案不感兴趣,那么请尝试投入一些精力并创建自己的完整实现将代码从基类移动到每个子类会破坏继承的整个目的。我也尝试将此代码移动到单独的样式,但也不起作用,因为如果没有代码隐藏,则无法应用此样式。