Wpf 设置d:所有页面的设计高度

Wpf 设置d:所有页面的设计高度,wpf,xaml,Wpf,Xaml,我的WPF项目由许多页面组成,所有页面都加载到同一个框架中。目前,我在每个文件的页面标记中指定d:DesignHeight和d:DesignWidth。如果可能的话,我只想在一个地方指定它(比如样式) 我尝试在App.xaml中将其设置为一种样式 <Style x:Key="PageStyle" TargetType="{x:Type Page}"> <Setter Property="d:DesignHeight" Value="942" /> <

我的WPF项目由许多页面组成,所有页面都加载到同一个框架中。目前,我在每个文件的
页面
标记中指定
d:DesignHeight
d:DesignWidth
。如果可能的话,我只想在一个地方指定它(比如
样式

我尝试在App.xaml中将其设置为一种样式

<Style x:Key="PageStyle" TargetType="{x:Type Page}">
    <Setter Property="d:DesignHeight" Value="942" />
    <Setter Property="d:DesignWidth" Value="1264" />

页面在设计器中正确呈现,但代码无法生成:

错误:在类型“System.Windows.Controls.Page”上找不到样式属性“DesignHeight”


我怎样才能在一个地方为多个页面设置相同的
d:DesignHeight
d:DesignWidth
。设计器属性不是真正的属性——它们是被Xaml解析器忽略的指令

事实上,您只能在显式告诉解析器忽略它们时使用它们:

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
mc:Ignorable
指令告诉解析器忽略给定名称空间中发生的任何查找失败。如果尝试引用某个设计器属性而不将设计器命名空间添加到
mc:Ignorable
,则会出现编译时错误:

XML命名空间“”中不存在属性“DesignWidth”

由于这些属性不是真实的属性,因此不能使用
Setter
应用它们,也不能以编程方式设置它们。对不起


补遗 我花了一些时间研究在设计模式下设置宽度和高度的其他选项。我尝试了自定义附加属性,对
页面
进行子类化,甚至在设计模式下覆盖
宽度
高度
的默认元数据。除了
窗口
页面
之外,几乎任何控件都可以使用每种方法。我怀疑这是因为设计师使用特殊代理元素显示窗口和页面的方式


在这一点上,我有理由相信VS 2017 Xaml设计器无法实现这一点。

我猜绑定和StaticResource也需要“真实”属性。这是正确的吗?WPF是否有任何类型的其他项目级变量替换或类似C中的
\define
之类的东西?我知道这是不同的机制,但我试着跳出框框思考一个解决方案。不,但我想我有一个解决方案给你。给我一点时间。我有一个解决方案,可以让您设置设计时的宽度和高度。您可以使用样式对其进行设置,但它实际上不适用于窗口或页面,因为WPF设计器显然不会在应用程序资源中搜索窗口或页面样式。这可能是因为设计器中显示的元素是代理元素,而不是实际的窗口或页面。将框架的宽度和高度设置为所需的值,并且让页面实例没有硬编码值不是更好吗?我使用的是
d:DesignHeight
而不是
Height
。这些属性使设计XAML内容的组合变得更容易,因此您可以对XAML内容用于控件实例或更大UI页面的其他部分时可能存在的布局约束有一些预期