在自定义控件模板上使用setter
本文关键字:setter 自定义控件 | 更新日期: 2023-09-27 18:05:46
我有一个资源字典文件,其中我有一个自定义的ControlTemplate定义
<ControlTemplate x:Key="ComboBoxToggleButton"
TargetType="{x:Type ToggleButton}">
<Grid>
....
</Grid>
</ControlTemplate>
(取自这里:http://msdn.microsoft.com/en-us/library/ms752094(v=vs.110).aspx(字典文件文件包含整个东西))
我用它来改变控件的外观。但现在,我希望能够通过setter动态改变它的宽度。
但问题是,如果我这样做(在另一个res. dictionary文件中)
<Style TargetType="ComboBox">
<Setter Property="Width" Value="250"/>
</Style>
它完全覆盖了我的自定义ControlTemplate,它使用默认的系统组合框,在那里它应用的宽度。但是我想让那个setter把宽度应用到我的自定义ControlTemplate上
当你在资源中编写样式时,它将始终覆盖到默认行为
如果你想让它继承其他样式,你需要使用BasedOn
property:
<Style TargetType="ComboBox" BasedOn="{StaticResource ComboBoxToggleButton}">
<Setter Property="Width" Value="250"/>
</Style>