2011-09-12 23 views
2

是否有任何代碼可以訪問SelectedItemChanged事件中的Datapresenter行以編程方式更改行的背景顏色?更改XAM數據展示器行的背景顏色

東西線沿線的:

presenterName.FieldLayouts[0].Fields[7].Visibility = Visibility.Collapsed; 

此代碼只是崩潰列,但我需要類似的改變特定行的東西。

+0

那麼你只是想改變行的背景顏色單擊時?編程? –

+0

確實,它會根據在嘗試連接到特定Web服務時是否引發異常而發生變化,因此我需要C#來更改它。 – User10

+3

您是否在Infragistics論壇中搜索/提出這個問題?他們必須回答這個問題,因爲它看起來像Infragistics XamDataGrid的典型要求。 –

回答

-1

我對DataGrid使用了SelectionChanged事件。

private void myDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     int index = myDataGrid.SelectedIndex; 
     DataGridRow row = myDataGrid.ItemContainerGenerator.ContainerFromIndex(index) as DataGridRow; 
     row.Background = Brushes.Red; 
    } 

這將簡單地將該行的背景顏色更改爲紅色。

編輯:剛纔注意到你正在談論Infragistics的Datapresenter。不知道這是否可以用於控制。可能要在他們的論壇上提問。

0

我認爲你可能需要走到樹下DataGridCellsPresenter默認情況下不公開。

private void DataGrid_SelectionChanged(object sender,SelectionChangedEventArgs e) 
     { 
      DataGridRow Row = 
       (DataGridRow)((DataGrid)sender).SelectedItem; 

      DataGridCellsPresenter CellsPresenter = 
       GetVisualChild<DataGridCellsPresenter>(Row); 
     } 

public static T GetVisualChild<T>(Visual parent) where T : Visual 
     { 
      T child = default(T); 
      int numVisuals = VisualTreeHelper.GetChildrenCount(parent); 
      for (int i = 0; i < numVisuals; i++) 
      { 
       Visual v = (Visual)VisualTreeHelper.GetChild(parent, i); 
       child = v as T; 
       if (child == null) 
       { 
        child = GetVisualChild<T>(v); 
       } 
       if (child != null) 
       { 
        break; 
       } 
      } 
      return child; 
     } 
2

爲此,您希望創建樣式並使用DataTrigger控制記錄的顏色。你的風格的目標可能是DataRecordCellArea或DataRecordPresenter。如果您的數據沒有公開您爲此綁定的屬性,那麼您可以使用記錄的Tag屬性。

這裏是展示瞭如何有條件地設置一個記錄的背景基於記錄一個單元格的值的例子: http://devcenter.infragistics.com/Support/KnowledgeBaseArticle.Aspx?ArticleID=10103

+0

謝謝,這適用於我的用例(我只是在記錄中添加了一個新列,並添加了代碼來更新其值以控制各種觸發器;但是,使用簡單的訪問器會喜歡這樣做)。從好的一面來說,我現在對每個記錄都有一個可查詢的字段 - 這是一個很好的設計。 –

+0

+1,非常有用的鏈接! – Noich