WPF。如何创建具有相同的外观
问题描述:
许多列表视图,我在我最近的项目定义的列表视图,并意识到,我会用更多的列表视图看完全相同,具有相同solumns。因为我对WPF很陌生,所以我很好奇最好的方法来做到这一点。它是创建一个用户控件?使用样式?我尝试过使用样式,但它没有像我希望的那样工作。我试图用style来设置“View”属性,就像这样。WPF。如何创建具有相同的外观
<Style x:Key="ListViewStyle" TargetType="{x:Type ListView}">
<Setter Property="View">
<ListView.View>
<GridView>
但它没有工作,所以我要求您的意见?谢谢。
答
你错过了Setter.Value
标签,你不需要ListView.View
标签:
<Style x:Key="ListViewStyle" TargetType="{x:Type ListView}">
<Setter Property="View">
<Setter.Value>
<GridView>
答
是的,你应该继续和所有的类似的控件把公共属性成风格,并链接到它...
,我从你简短的代码片段中看到的问题是,你不需要在ListView.List元素(AB XAML语法意味着你设置上A. b属性)
<Style ...
<Setter Property="PropertyName">
<ValueObj/>
</Setter>
<Setter Property="View">
<GridView ... />
</Setter>
</Style>
答
尚未讨论另一种可能性:你可以在一个DataTemplate
定义ListView
,并使用该DataTemplate
显示你会显示出不同的集合。举例来说,如果你的项目的集合都MyCollectionType
型的,你可以这样做:
<DataTemplate DataType="myNamespace:MyCollectionType">
<ListView ItemsSource="{Binding Items}">
<!-- define everything here -->
</ListView>
</DataTemplate>
...
<StackPanel>
<ContentControl Content="{Binding OneCollection}"/>
<ContentControl Content="{Binding AnotherCollection"/>
</StackPanel>
,并在您的视图模型的OneCollection
和AnotherCollection
属性都被渲染为具有相同的布局ListView
控制。