为什么我的Radiobutton看起来不像一个togglebutton? 看看代码
<Style x:Key="ButtonBaseStyle" TargetType="{x:Type ButtonBase}">
<Setter Property="Height" Value="100" />
</Style>
<Style BasedOn="{StaticResource ButtonBaseStyle}" TargetType="{x:Type Button}" />
<Style BasedOn="{StaticResource ButtonBaseStyle}" TargetType="{x:Type ToggleButton}" />
<Style BasedOn="{StaticResource {x:Type ToggleButton}}" TargetType="{x:Type RadioButton}" />
<StackPanel>
<Button>Button</Button>
<ToggleButton>Toggle</ToggleButton>
<RadioButton>Radio</RadioButton>
</StackPanel>
如果我删除它的按钮基础样式
答案 0 :(得分:1)
RadioButton
的外观不是ToggleButton
因为您现在已经更改了ButtonBase->ToggleButton->RadioButton
的样式层次结构(在WPF的派生类中覆盖样式和模板的顺序) )。
您新的样式层次结构最优先考虑ButtonBase
的样式。因此,您有一个新的ToggleButton
样式,该样式派生自ButtonBase
,然后您使用该样式覆盖RadioButton
样式。因此,没有人能够确定您覆盖了哪些属性,哪些属性是最终的属性集。
要了解此更改XAML
,请执行以下操作:
<Style BasedOn="{StaticResource {x:Type ToggleButton}}" TargetType="{x:Type ToggleButton}" />
<Style BasedOn="{StaticResource {x:Type ToggleButton}}" TargetType="{x:Type RadioButton}" />
现在看看外观&amp;感受到你的RadioButton
。
我没有澄清究竟发生了什么以及为什么ToggleButton
不会受到太大影响。
但正如我所说的那样,关于在UI上呈现之前最终为控件构建的样式层次结构。