我们说我们有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>
:
ItemContainerStyle
现在我要更改SpecialListView
的{{1}}。但是,我不想完全取代它。相反,我只想设置一个属性(让我们说Background
)。
我能提出的唯一解决方案是在Style
中为ItemContainerStyle
命名Resources
,并根据它创建一个新的Style
。不过,我不想这样做。我们可能不知道哪个Style
已应用或可能无法为子Can't locate POE/Component/Client/HTTP.pm in @INC (you may need to install the POE::Component::Client::HTTP module) (@INC contains: /home/res/workspace/.metadata/.plugins/org.epic.debug /home/res/workspace/perlone/CIDS-dev /etc/perl /usr/local/lib/perl/5.18.2 /usr/local/share/perl/5.18.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.18 /usr/share/perl/5.18 /usr/local/lib/site_perl .) at /home/res/workspace/perlone/CIDS-dev/webproxy.pl line 7.
BEGIN failed--compilation aborted at /home/res/workspace/perlone/CIDS-dev/webproxy.pl line 7.
设置名称。
有可能吗?
答案 0 :(得分:0)
如果您能区分具体情况,可以使用转换器。
在特定属性的通用样式中绑定到特定转换器。 转换器的默认逻辑返回通用样式值,在特定情况下返回另一个值。
答案 1 :(得分:-1)
好的,这可能有点简化了。但是显示了主要的想法
<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>