【发布时间】:2017-04-18 16:35:51
【问题描述】:
我有一个 WPF ControlTemplate,其中包含一个 ListView(我们称之为“原始 ListView”)和另一个自定义 WPF 控件,它有自己的包含 ListView 的控件模板(我们称之为“自定义 ListView”)。
我正在像这样更改原始 ListViews 样式:
<Style TargetType="{x:Type ListView}" BasedOn="{StaticResource ListViewStyle}">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:MyClass}}, Path=MyVariable}" Value="0">
<Setter Property="ListView.ItemsPanel" Value="{StaticResource itemsPanelTemplate1}"/>
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:MyClass}}, Path=MyVariable}" Value="1">
<Setter Property="ListView.ItemsPanel" Value="{StaticResource itemsPanelTemplate2}" />
</DataTrigger>
</Style.Triggers>
</Style>
<ListView x:Name="My_ListView" ItemsSource="{Binding}" ItemContainerStyle="{DynamicResource MyListViewItemStyle}"/>
我看到的是,当我通过更改 MyVariable 更改原始 ListView 的样式时,自定义 ListViews 样式也会更改。
如何避免这种情况,让样式更改只影响我想要的 ListView?
【问题讨论】:
-
您的样式在哪里定义以及如何设置“原始” ListView 的样式?
-
我上面复制的样式是在包含“原始 ListView.我通过更改 MyVariable 来设置样式,DataTriggers 应用 itemsPanelTemplate1 或 itemsPanelTemplate2。
标签: c# wpf xaml listview controltemplate