2017-04-18 8 views
0

ListView(これを「オリジナルListView」と呼ぶことができます)を含むWPF ControlTemplateと、独自のコントロールテンプレートにListViewを含む別のカスタムWPFコントロールがあります')。ListViewsスタイルを1つ変更すると他の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のスタイルを変更すると、カスタムリストビューのスタイルも変化することです。

スタイルの変更だけが私が望むリストビューに影響するように、これを避けるにはどうすればよいですか?

+0

あなたのスタイルはどのように定義され、どのように "元の"リストビューのスタイルを設定しますか? – mm8

+0

上記のコピーしたスタイルは、元のListViewを含むControlTemplate内で定義されています。私はMyVariableを変更してスタイルを設定し、DataTriggrersはitemsPanelTemplate1またはitemsPanelTemplate2を適用します。 –

答えて

2

Styleにはx:Key属性がないため、範囲内のすべてのListBox要素に適用されます。これは暗黙のデータテンプレートと呼ばれます。

あなただけの単一ListViewStyleを適用したい場合は、あなたがStylex:Key与える必要があります。

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

を...と、これを使用して、適用するためにListViewStyleプロパティを設定しますスタイルを使用してStaticResource

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

あなたは男です@ mm8ありがとうございました! –

関連する問題