WPF。如何使用相同的外观创建多个LIstView

时间:2010-05-22 04:51:34

标签: wpf listview styles

我在我最近的项目中定义了一个列表视图,并意识到我将使用更多的列表视图,看起来完全相同并且具有相同的列。由于我是WPF的新手,所以我很好奇最好的方法。是创建用户控件吗?使用样式?我试过使用样式,但它没有按照我希望的方式工作。我尝试使用样式设置“View”属性,如下所示。

<Style x:Key="ListViewStyle" TargetType="{x:Type ListView}">
    <Setter Property="View">
        <ListView.View>
            <GridView>

但它没有用,所以我要求你的意见?!感谢。

3 个答案:

答案 0 :(得分:1)

您遗漏了Setter.Value代码,而且您不需要ListView.View代码:

<Style x:Key="ListViewStyle" TargetType="{x:Type ListView}">
    <Setter Property="View">
        <Setter.Value>
            <GridView>

答案 1 :(得分:0)

是的,您应该继续将公共属性放入样式并从所有类似的控件链接到它...

我从您的简短代码片段中看到的问题是您不需要ListView.List元素(A.B XAML语法意味着您在A上设置B属性。)

<Style ...
  <Setter Property="PropertyName">
     <ValueObj/>
  </Setter>
  <Setter Property="View">
     <GridView ... />
  </Setter>
</Style>

答案 2 :(得分:0)

尚未讨论的另一种可能性:您可以在ListView中定义DataTemplate,并使用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>

并且视图模型中的OneCollectionAnotherCollection属性都将呈现为具有相同布局的ListView控件。