2013-10-29 78 views
0

我正在定製一個wpf數據網格,我遇到的問題是我已經在下面的Row樣式中設置了RowStyle和RowDetails模板,我只是將Row Background設置爲一些橙色漸變刷:Datagrid RowDetailsTemplate Stretch RowBackground漸變畫筆

<DataGrid.RowStyle> 
    <Style TargetType="{x:Type DataGridRow}"> 
     <Setter Property="Background" Value="White" /> 
     <Style.Triggers> 
      ... 
      <Trigger Property="IsSelected" Value="True"> 
       <Setter Property="Height" Value="24" /> 
        <Setter Property="Background"> 
         <Setter.Value> 
          <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1" Opacity="0.9"> 
           <GradientStop Color="White" Offset="0.0" /> 
           <GradientStop Color="Orange" Offset="0.2" /> 
           <GradientStop Color="#FF4500" Offset="0.8" /> 
           <GradientStop Color="#EE4000" Offset="0.9"/> 
           <GradientStop Color="White" Offset="1.0" /> 
          </LinearGradientBrush> 
         </Setter.Value> 
        </Setter> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 

這工作都正常,直到我決定設置RowDetailsTemplate,當其在DataGrid中選擇該行,這將導致漸變畫筆拉伸到適合現在的詳細信息部分,直到你只能看到頂部褪色的橙色。現在我假設這是因爲行詳細信息模板是行的一部分。
但是,如果有人離開,我會徘徊,我可以阻止這種情況發生?
一個解決方法是設置單元格樣式,但是這會導致新問題,例如不是整行被着色,即在網格的末端有一些空的空間,當您設置CellStyle。

回答

0

您可以在RowDetailsTemplate中明確設置ContentControl的背景顏色。

<DataGrid.RowDetailsTemplate>   <DataTemplate> 
       <Border Name="RowDetailsTemplateBorder" BorderBrush="#3B73B9" BorderThickness="2" Margin="1" > 
       <Grid Name="RowDetailsTemplateGrid" Height="180" Background="White"> 
          <Image Height="100" Source="{Binding Image}" /> 
    </Grid> 
       </Border> 
     </DataTemplate> 
    </DataGrid.RowDetailsTemplate> 
+0

然而,我之前試過,它只能部分解決問題,因爲行的漸變刷仍然伸展,現在發生的所有情況是,網格將具有不同的彩色背景。換句話說,在行本身,你仍然只能看到拉伸的顏色。 – Heinrich

+0

我在我的測試應用程序中嘗試了相同的方法,它按照您的期望工作。我有RowDetailTemplateSelector類,用於爲各種類型的數據行定義模板併爲模板分配了特定的顏色。除此之外,我還有Datagrid RowStyle,其中我添加了觸發器,用於在某些屬性爲true時更改行背景顏色。 –

+0

但是,您是否使用漸變畫筆進行了嘗試,如果您使用單一顏色的外觀很好,那麼當您使用漸變畫筆發現問題時 – Heinrich