Wpf 设置d:所有页面的设计高度
我的WPF项目由许多页面组成,所有页面都加载到同一个框架中。目前,我在每个文件的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" /> <
页面
标记中指定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页面的其他部分时可能存在的布局约束有一些预期