在XAML中调整控件的当前样式

时间:2015-10-29 13:04:45

标签: c# wpf xaml listview wpf-style

我们说我们有ListView。我们Resources的某处Style ListView正在自动应用StyleItemContainerStyle设置了<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. 设置名称。

有可能吗?

2 个答案:

答案 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>