C# Silverlight中DataGridRow的问题设置前景
我有一个简单的Silverlight任务: 在数据网格中显示供应商对象的列表C# Silverlight中DataGridRow的问题设置前景,c#,silverlight,xaml,datagrid,styling,C#,Silverlight,Xaml,Datagrid,Styling,我有一个简单的Silverlight任务: 在数据网格中显示供应商对象的列表 如果供应商被“停用”(由供应商的属性IsDeactivated指示),则显示一个手形图标并将前景颜色设置为灰色。否则,将前景色设置为蓝色。 该行应如下所示: 指定的列是模板列,如下所示: <sdk:DataGridTemplateColumn IsReadOnly="True"> <sdk:DataGridTemplateColumn.Cell
如果供应商被“停用”(由供应商的属性IsDeactivated指示),则显示一个手形图标并将前景颜色设置为灰色。否则,将前景色设置为蓝色。
该行应如下所示: 指定的列是模板列,如下所示:
<sdk:DataGridTemplateColumn IsReadOnly="True">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Padding="3" Text="{Binding City}" />
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
但是,当我现在将IsDeactivated更改为true时,手形图标是不可见的(根据需要),但是前景颜色仍然为灰色:我已经尝试通过执行Converter或PropertyChangeTrigger方法来解决此问题,但是,这会覆盖为MouseOver或Selected设置的自定义VisualState样式 我听说这可能与DataGrid虚拟化有关
有人知道如何解决这个问题吗?如果您不需要虚拟化 试试这个
private void LoadingDataGridRow(object sender, DataGridRowEventArgs e)
{
var supplier = (Supplier)e.Row.DataContext;
e.Row.Foreground = supplier.IsDeactivated ? new SolidColorBrush(Colors.Gray) : new SolidColorBrush(Color.FromArgb(255, 65, 85, 155));
}
private void UnLoadingDataGridRow(object sender, DataGridRowEventArgs e)
{
var supplier = (Supplier)e.Row.DataContext;
e.Row.ClearValue(ForegroundProperty);
}