Datagrid RowDetailsTemplate Stretchs RowBackground Gradient Brushes

时间:2013-10-29 01:53:14

标签: wpf datagrid gradient

我正在定制一个wpf数据网格,我遇到的问题是我已经设置了RowStyle和RowDetails模板,在Row样式中如下所示我只是将行背景设置为一些橙色渐变画笔:< / p>

<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时不会被填充。

1 个答案:

答案 0 :(得分:0)

您可以显式设置ContentControl的背景颜色位于RowDetailsTemplate中。

<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>