2012-02-23 64 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