2011-04-28 48 views
1

我確實有簡單的Silverlight任務:Silverlight中DataGridRow的問題設置

在DataGrid中顯示供應商對象列表。
如果供應商被「停用」(供應商的財產IsDeactivated表示)顯示手形圖標並將前景顏色設置爲灰色。否則,將前景色設置爲藍色。
行應該是這個樣子:

enter image description here

指定的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,手形圖標是無形的 - 如需要 - 然而,前景色仍然是灰色的:

enter image description here

我已經嘗試過解決這個問題通過做轉換PropertyChangeTrigger方法的問題,但是,這將覆蓋鼠標懸停選擇設置自定義的VisualState樣式。

我聽說這可能與DataGrid虛擬化有關

有沒有人有關於如何解決這個問題的想法?

回答