C# Silverlight中DataGridRow的问题设置前景

C# Silverlight中DataGridRow的问题设置前景,c#,silverlight,xaml,datagrid,styling,C#,Silverlight,Xaml,Datagrid,Styling,我有一个简单的Silverlight任务: 在数据网格中显示供应商对象的列表 如果供应商被“停用”(由供应商的属性IsDeactivated指示),则显示一个手形图标并将前景颜色设置为灰色。否则,将前景色设置为蓝色。 该行应如下所示: 指定的列是模板列,如下所示: <sdk:DataGridTemplateColumn IsReadOnly="True"> <sdk:DataGridTemplateColumn.Cell

我有一个简单的Silverlight任务:

在数据网格中显示供应商对象的列表
如果供应商被“停用”(由供应商的属性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);
    }