2017-04-18 65 views
0

我有一個WPF控件模板包含一個ListView(讓我們稱之爲「原始的ListView」),並且具有包含一個ListView自己的控制模板其他自定義WPF控件(讓我們稱之爲「自定義的ListView 「)。更改一個列表視圖風格會影響其他列表視圖也

我改變原來的列表視圖樣式像這樣:

<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的樣式也發生變化。

我怎樣才能避免這種情況,這樣的風格變化隻影響我想要的ListView控件?

+0

您的樣式在哪裏定義,以及如何設置「原始」ListView的樣式? – mm8

+0

我上面複製風格包含「原ListView中的ControlTemplate內部限定。我通過改變MyVariable的設置風格和DataTriggrers或者適用itemsPanelTemplate1或itemsPanelTemplate2。 –

回答

2

由於您的Style沒有x:Key屬性,因此它將應用於範圍內的所有ListBox元素。這被稱爲隱式數據模板。

如果你只想在Style適用於單個ListView,你應該給Style一個x:Key

<Style x:Key="myStyle" TargetType="{x:Type ListView}" BasedOn="{StaticResource ListViewStyle}"> 

......並要應用設置ListViewStyle財產使用樣式StaticResource

<ListView x:Name="original" Style="{StaticResource myStyle}" ... /> 
+0

你是男人@ MM8非常感謝! –

相關問題