如何在WPF ListView + GridView中设置单元格周围的空间?

时间:2018-03-08 13:10:40

标签: wpf xaml

我正在尝试用ListView + GridView替换DataGrid。不幸的是,它看起来完全不同,我不太了解样式来做出所有改变。我找到了列标题,但是单元格的样式实现起来比较棘手。

编辑:这个问题基本上与“我如何获得垂直格栅?”相同?因为我通过使用边缘获得了行间空间。所以它看起来MICROSOFT在他们的GRIDVIEW中忘记了最重要的功能:让它成为网格的一个。

const dependency = () => import(
  /* webpackChunkName: "login-chunk" */
  /* webpackMode: "eager" */
  'module in Login.vue'
).then(m => m.default || m);

那么如何设置每个单元格周围的空间(例如每边2个)?

1 个答案:

答案 0 :(得分:2)

不幸的是,只要您使用DisplayMemberBinding,其他所有内容(包括CellStyles)都会被完全忽略。您可以(也可能必须)做的是手动定义所有列,例如:

<GridViewColumn Header="Name">
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <TextBlock Margin="4" Text="{Binding Name}"/>
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>

有关样式/模板优先级on MSDN的详细信息:

  

以下属性都用于定义列单元格的内容和样式,并按其优先顺序列出,从最高到最低:

     
      
  • DisplayMemberBinding
  •   
  • CellTemplate
  •   
  • CellTemplateSelector
  •   

理论上可以将每个ListItem设置为这样:

<ListView.ItemContainerStyle>
    <Style TargetType="ListViewItem">
        <Setter Property="Margin" Value="50,0"></Setter>
    </Style>
</ListView.ItemContainerStyle>

但不幸的是,这只会使所有列错位,所以这种方法对于Margin / Padding并不是很有用。

Misaligned Columns