如何使用ControlTemplate
设置控件的宽度或高度?
例如,我有这个模板:
<ControlTemplate x:Key="GridSplitterTemplate" TargetType="{x:Type GridSplitter}">
<!-- What goes here? -->
</ControlTemplate>
这是模板用法:
<GridSplitter Template="{StaticResource GridSplitterTemplate}"
Grid.Column="1" ResizeDirection="Columns" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
我还有几个GridSplitter
,所有这些都应该GridSplitter.Width="10"
。如何使用ControlTemplate
设置一次?
答案 0 :(得分:4)
如果你想要&#34;硬代码&#34;使用ControlTemplate的宽度/高度,然后只需设置根元素的宽度/高度:
<ControlTemplate x:Key="GridSplitterTemplate" TargetType="{x:Type GridSplitter}">
<!-- What goes here? -->
<Grid Width="10" Height="10">
</Grid>
</ControlTemplate>
我认为@lll有一点 - 这通常是你用Style做的事情。如果你想要一个不同大小的GridSplitter实例,会发生什么?而且你不会因为这种方法而失去任何东西:
<Style x:Key="GridSplitterStyle" TargetType="{x:Type GridSplitter}">
<Setter Property="Width" Value="10" />
<Setter Property="Height" Value="10" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate x:Key="GridSplitterTemplate" TargetType="{x:Type GridSplitter}">
<Grid Width="{TemplateBinding Width}" Height="{TemplateBinding Height}">
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
现在,让您的实例引用样式而不是控件模板:
<GridSplitter Style="{StaticResource GridSplitterStyle}"
这允许您仍然具有默认的高度/宽度10,但如果需要,实例可以覆盖它:
<GridSplitter Style="{StaticResource GridSplitterStyle}" Width=20
答案 1 :(得分:1)
您只想设置Style
而不是ControlTemplate
<Style TargetType="GridSplitter" x:Name="GridSplitterTemplate">
<Setter Property="Width" Value="10"/>/
</Style>
如果您真的想使用ControlTemplate
<ControlTemplate x:Key="GridSplitterTemplate" TargetType="{x:Type GridSplitter}">
<GridSplitter Width="10"/>
</ControlTemplate>