2012-02-23 67 views

回答

1

滚动条上方该矩形的颜色是DataGrid的Background属性。因此,举例来说,如果你想令它发黄,你可以设置

<DataGrid Background="Yellow" ... 

的这个(可能)的缺点是,背景则影响到你的整个数据网格,包括不通过数据行占用任何空间:

enter image description here

一种解决方案,如果希望有问题的矩形是黄色的,但不是数据行下方的空间,可能是设计出呈现黄色的条带相同的宽度,列标题自定义画笔,其余部分为白色。

+0

这是两个更好的选择,我可以摆在那里渐变背景,以使它看起来像我希望它。 我以为我试过这个,改变DataGrid的背景,但发现我会在最后一分钟重写以防止我的更改生效。 :) – 2012-02-23 13:56:29

+1

太好了。以防万一你想知道,你可以使用两把刷子在两个刷子之间做一个刷子,在两个位置之间不要有梯度。如下所述:http://stackoverflow.com/questions/6546837/wpf-background-two-tone – 2012-02-23 14:09:56

0

不知道这是否会有所帮助,但一个方法我已经在过去用于从其头部分开的栏目,并分别呈现出来。

列定义在资源定义:

<UserControl.Resources> 
    <ResourceDictionary> 
     <GridViewColumnCollection x:Key="siColumnCollection"> 
      <GridViewColumn> 
       <GridViewColumn.CellTemplate> 
        <DataTemplate> 
         ... 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
       <GridViewColumnHeader Content="Fish"/> 
      </GridViewColumn> 
    ... 

然后头和列表视图中单独列示,都引用相同的资源:

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <GridViewHeaderRowPresenter Columns="{StaticResource siColumnCollection}"/> 
    <ListView Grid.Row="1" ItemsSource="{Binding ViewModelList}"> 
     <ListView.Resources> 
      <DataTemplate x:Key="siNormalRowTemplate"> 
       <GridViewRowPresenter Columns="{StaticResource siColumnCollection}"/> 
      </DataTemplate> 
     </ListView.Resources> 
    </ListView> 
</Grid> 

(我不能保证这个XAML完全按照书面形式工作,但它给你的想法)。

这种安排的优点是你可以自由地分别处理标题和列表主体。所以如果你想在GridViewHeaderRowPresenter之后立即添加一些填充,你可以自由地做。

编辑:如果你有一个GridView,这个解决方案工作,但不幸的是不能用于DataGrid。我看不到分裂在DataGrid中的标题和行等价的方式,所以如果你准备交换数据网格为一个GridView这个答案才有效。抱歉!

5

请使用下面的模板(该ColumnSpan的伎俩):

 <Style x:Key="{x:Type DataGridColumnHeadersPresenter}" TargetType="{x:Type DataGridColumnHeadersPresenter}"> 
      <Setter Property="Grid.ColumnSpan" Value="2" /> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type DataGridColumnHeadersPresenter}"> 
         <Grid> 
          <DataGridColumnHeader IsHitTestVisible="False" Name="PART_FillerColumnHeader"/> 
          <ItemsPresenter/> 
         </Grid> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
+1

有趣的选项,它的工作原理,但你仍然可以看到一个分隔符和resizecolumn鼠标指针。 – Gerard 2013-12-12 11:34:39