ورود

View Full Version : مشکل در استفاده از Style ها برای DataGridRow



smt1383
دوشنبه 03 آبان 1389, 09:18 صبح
با سلام خدمت دوستان
من یک DataGrid درست کرده ام که ردیف های آن یک در میان سفید و آبی (به صورت Linear Gradient) است. حال یک تریگر تعریف کرده ام که هر ردیفی که select شد رنگ آن ردیف به رنگ قرمز درآید (باز هم به صورت Linear Gradient) اما مشکل اینجاست که وقتی روی یک ردیف سفید رنگ کلیک می کنم تمام ردیف قرمز می شود اما وقتی روی ردیف های خاکستری کلیک می کنم فقط نیمی از آن قرمز میشود. کدهای XAML تعریف شده به این صورت است:


<DataGrid.Resources>

<LinearGradientBrush x:Key="SelectedRowBackGround" StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="Pink" Offset="0.0"></GradientStop>
<GradientStop Color="White" Offset="0.5"></GradientStop>
<GradientStop Color="Pink" Offset="1.0"></GradientStop>
</LinearGradientBrush>

<LinearGradientBrush x:Key="RowBackGround" StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="LightGray" Offset="0.0"></GradientStop>
<GradientStop Color="White" Offset="0.5"></GradientStop>
<GradientStop Color="LightGray" Offset="1.0"></GradientStop>
</LinearGradientBrush>

<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="MinHeight" Value="20"></Setter>
<Setter Property="Margin" Value="0"></Setter>
<Setter Property="FontWeight" Value="Bold"></Setter>
<Setter Property="Foreground" Value="Navy"></Setter>
<Setter Property="SeparatorBrush" Value="Black"></Setter>
</Style>

<Style TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True" >
<Setter Property="Background" Value="{StaticResource SelectedRowBackGround}" />
<Setter Property="Foreground" Value="Black"/>
<Setter Property="BorderBrush" Value="Transparent"/>
</Trigger>
</Style.Triggers>
</Style>

<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True" >
<Setter Property="Background" Value="{StaticResource SelectedRowBackGround}" />
<Setter Property="Foreground" Value="Black"/>
<Setter Property="BorderBrush" Value="Red"/>
<Setter Property="BorderThickness" Value="1"/>
</Trigger>
</Style.Triggers>
</Style>


</DataGrid.Resources>

<DataGrid.AlternatingRowBackground>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="LightSteelBlue" Offset="0.0"></GradientStop>
<GradientStop Color="White" Offset="0.5"></GradientStop>
<GradientStop Color="LightSteelBlue" Offset="1.0"></GradientStop>
</LinearGradientBrush>
</DataGrid.AlternatingRowBackground>

</DataGrid>

کسی از دوستان می تواند کمک کند؟ نمونه برنامه را هم گذاشته ام.