调整XAML中控件的当前样式
本文关键字:样式 控件 XAML 调整 | 更新日期: 2023-09-27 18:19:55
假设我们有一个ListView
。在我们的Resources
中,有一个Style
用于ListView
,它正在自动应用。Style
设置ItemContainerStyle
:
<Window.Resources>
<Style TargetType="{x:Type ListView}">
<Setter Property="ItemContainerStyle">
...
</Setter>
</Style>
</Window.Resources>
...
<ListView x:Name="SpecialListView">
...
</ListView>
现在我想更改SpecialListView
的ItemContainerStyle
。但是,我不想完全替换它。相反,我只想设置一个属性(比如Background
)。
我唯一能想到的解决方案是在Resources
中命名用于ItemContainerStyle
的Style
,并在此基础上创建一个新的。不过我不想这么做。我们可能不知道应用了哪个Style
,或者可能无法设置子Style
的名称。
有可能吗?
如果您能区分具体情况,您可以使用转换器。
在特定属性的泛型样式中,绑定到特定转换器。转换器的默认逻辑返回通用样式值,在特定情况下返回其他值。
好吧,这可能有点简化。但显示了的主要想法
<Window.Resources>
<Style TargetType="{x:Type TextBox}">
<Setter Property="Foreground" Value="Green"></Setter>
<Setter Property="Background" Value="Red"></Setter>
</Style>
</Window.Resources>
<StackPanel>
<TextBox>
<TextBox.Style>
<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
<Setter Property="Background" Value="Yellow"></Setter>
</Style>
</TextBox.Style>
Tb1
</TextBox>
<TextBox>Tb2</TextBox>
<TextBox>Tb3</TextBox>
</StackPanel>