我確實有簡單的Silverlight任務:Silverlight中DataGridRow的問題設置
在DataGrid中顯示供應商對象列表。
如果供應商被「停用」(供應商的財產IsDeactivated表示)顯示手形圖標並將前景顏色設置爲灰色。否則,將前景色設置爲藍色。
行應該是這個樣子:
指定的colums是模板列如下所示:
<sdk:DataGridTemplateColumn IsReadOnly="True">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Padding="3" Text="{Binding City}" />
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
要設置前景色分配我實現了LoadingRow數據源後, and UndloadingRow events:
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);
}
然而,當我現在改變IsDeactivated爲true,手形圖標是無形的 - 如需要 - 然而,前景色仍然是灰色的:
我已經嘗試過解決這個問題通過做轉換或PropertyChangeTrigger方法的問題,但是,這將覆蓋鼠標懸停或選擇設置自定義的VisualState樣式。
我聽說這可能與DataGrid虛擬化有關?
有沒有人有關於如何解決這個問題的想法?