我正在尝试为grid
对象创建一个可视化模板(在资源字典中保存为xaml代码),我将应用于稍后在运行时创建的各种grid
对象。
我需要一个带边框和背景的简约风格。 这样做的最佳方式是什么?
非常感谢简单的工作示例。
好的,所以,在搜索了例子之后,我尝试了这样的事情:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style x:Key="TestStyle">
<Setter Property="Background" Value="#FF873507" />
<Setter.Value>
<ControlTemplate>
<Grid>
<Border BorderThickness="7" CornerRadius="4">
<Border.BorderBrush>
<SolidColorBrush Color="#73B2F5"/>
</Border.BorderBrush>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Style>
</ResourceDictionary>
答案 0 :(得分:1)
WPF实际上并不是那样......因为Grid
类没有Template
属性,所以不能为它定义新的ControlTemplate
。您可以做的最近的事情是创建一个包含您要使用的UI元素的UserControl
,然后在显示这些控件的任何位置显示UserControl
。
或者,如果内部控件始终相同,可以在ControlTemplate
内定义您的内容:
<ControlTemplate x:Key="StaticGrid">
<Grid>
<Border BorderThickness="7" CornerRadius="4">
<Border.BorderBrush>
<SolidColorBrush Color="#73B2F5"/>
</Border.BorderBrush>
<!--Add your inner elements here-->
</Border>
</Grid>
</ControlTemplate>
然后您可以这样显示:
<ContentControl Template="{StaticResource StaticGrid}" />
但是,您无法使用此方法添加不同的内部元素。如果您使用UserControl
方法,则可能会将UserControl
替换为Grid
,以便您实际上扩展Grid
类,但您仍然不会能够添加不同的元素。
您在Style
中可以做的最好的事情就是设置Background
属性。
答案 1 :(得分:0)
经过多次尝试和挫折后,我发现了一个更简单的解决方案,对我有用。 我没有尝试将样式应用于网格,而是将其应用于网格周围的边框。
所以,我的字典看起来像这样:
<Style x:Key="TestStyle" TargetType="{x:Type Border}">
<Setter Property="Background" Value="#FFBDACA2" />
<Setter Property="BorderBrush" Value="#FFFF5E00" />
<Setter Property="CornerRadius" Value="30,30,30,30" />
<Setter Property="BorderThickness" Value="10" />
</Style>
我的主框架xaml:
<Border Style="{StaticResource TestStyle}" >
<Grid>
</Grid>
</Border>