2011-04-28 8 views
1

私は単純なSilverlightタスクを持っています。SilverlightでDataGridRowの設定の前景を設定する

DataGridにSupplierオブジェクトのリストを表示します。
サプライヤが「非アクティブ」(サプライヤのプロパティIsDeactivated)と表示されている場合は、ハンドアイコンを表示し、フォアグラウンドカラーをグレーに設定します。それ以外の場合は、前景色を青色に設定します。ここに示すように、指定されたcolumsがテンプレート列です

enter image description here

  <sdk:DataGridTemplateColumn IsReadOnly="True"> 
       <sdk:DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <TextBlock Padding="3" Text="{Binding City}" /> 
        </DataTemplate> 
       </sdk:DataGridTemplateColumn.CellTemplate> 
      </sdk:DataGridTemplateColumn> 

私はLoadingRowを実装し、データソースを割り当てた後、フォアグラウンド色を設定するには
行は次のようになります。
UndloadingRowイベント:

 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); 
    } 

は、しかし、私は今がtrueにをIsDeactivated変更したときに、手のアイコンが見えない - 必要に応じて - しかし、フォアグラウンドの色が灰色に残っている:

enter image description here

私はすでにこの問題を解決しようとしましたコンバータまたはPropertyChangeTriggerアプローチを行うことで問題が、しかし、これはマウスオーバーまたはを選択に設定されたカスタムvisualSTATEのスタイルを上書きします。

これは、と関係があると聞きました。DataGrid Virtualizing

誰かが問題の解決方法を知っていますか?

答えて

関連する問題