我为Scrollbar定义了一个隐式样式并设置了一些属性,我将它用于大多数ScrollViewrs。风格的一部分是:
<Style x:Key="{x:Type ScrollBar}" TargetType="{x:Type ScrollBar}">
<Setter Property="Background" Value="#FF283542" />
<Setter Property="Margin" Value="0,-32,0,0" />
<Setter Property="Width" Value="5" />
</Style>
但我有一些TextBoxes,我希望它们的Scrollbar具有相同的隐式Scrollbar样式,但是具有不同的边距。
我可以通过向每个TextBox添加Resources来覆盖隐式ScrollBar样式,如:
<TextBox Style="{StaticResource big-text-style}">
<TextBox.Resources>
<Style TargetType="{x:Type ScrollBar}"
BasedOn="{StaticResource {x:Type ScrollBar}}">
<Setter Property="Margin" Value="0"/>
</Style>
</TextBox.Resources>
</TextBox>
此代码为我提供了我想要的功能。但这种方法的问题是我必须编写每个TextBox的这些代码行!如果我可以把它作为TextBox样式本身的一部分,会好得多。
我想知道有没有办法将它放在TextBox的Style中,以便每个具有大文本风格的TextBox(例如)都有覆盖的ScrollBar?
或者有更好的方法来实现这种事情吗?
感谢您的帮助!
答案 0 :(得分:2)
您可以将重写ScrollBar
样式添加到Resources
样式本身的TextBox
:
<Style x:Key="big-text-style" TargetType="TextBox">
<Style.Resources>
<Style TargetType="{x:Type ScrollBar}" BasedOn="{StaticResource {x:Type ScrollBar}}">
<Setter Property="Margin" Value="0"/>
</Style>
</Style.Resources>
</Style>