在WPF XAML中,存在方便的DesignHeight
和DesignWidth
,例如在代码中
<UserControl ... d:DesignHeight="500" d:DesignWidth="500" ... />
这很棒,因为我可以用一个“代表性”但“非锁定”的控件大小来构建布局。
然而,我经常构建深色UI,其中标签等需要是白色的,但我的控件仍然需要透明背景色。这造成了设计时的不便,因为白色似乎是设计器中透明控件的默认背景色,导致无法读取白底白字标签。
是否有一种方法或策略可以像DesignHeight/DesignWidth那样方便地设置设计时背景色?
5条答案
按热度按时间qlvxas9a1#
有一个未记录的
Style
类型的属性d:DesignStyle
,您可以在用户控件上设置该属性。此样式仅应用于设计器,不能在运行时使用。您可以这样使用它:
或者像这样:
Background
属性就是您所要求的。Height
和Width
确实替换了<UserControl>
标记中的d:DesignHeight=500
和d:DesignWidth=500
。这样,您就可以在一个地方拥有所有的设计属性。但是请注意,在
Style
属性上设置的任何值(在运行时使用的值)也将覆盖设计器中的DesignStyle
。insrf1ej2#
我发现你可以自己做一个。Custom design-time attributes in Silverlight and WPF designer是一个如何为Silverlight和WPF做的教程。
roejwanj3#
我的答案在这里找到:Black Background for XAML Editor。有许多选择,包括在运行时检查
System.ComponentModel.DesignerProperties.GetIsInDesignMode(this)
。c3frrgcw4#
这是DesignBackground的完整解决方案:
用法:
dly7yett5#
本页所示的
d:DesignerProperties.DesignStyle
技术非常适合将WPF仅设计时样式应用于单个控件,但它似乎不适用于ResourceDictionary
中的Style
,而ResourceDictionary
将应用于字典范围内的“所有”类型适当的控件或元素。仅样式为ResourceDictionary
。例如,考虑包含
TreeView
的Window
,其中我们希望TreeViewItem
节点显示为完全展开-但仅在设计时。首先,以常规方式将所需样式放入XAML字典中。在这里,
Style
被放入Window
的ResourceDictionary
中,但是当然你也可以使用任何其他包含字典。接下来,在C#代码中,* 当设计模式notdetected* 时,从ResourceDictionary
中删除样式。在OnInitialized
重写中执行此操作:设计模式: 运行时模式: