2012-02-06 33 views
1

我想根據某些條件爲DataGrid行分配不同的工具提示。訪問DataGrid_LoadingRow事件處理程序中的行項目

private void DataGrid_LoadingRow(object sender, DataGridRowEventArgs e) 
    { 
     DataGridRow row = e.Row; 

     if (row["AssemblySummary"].ToString.Contains("Class")) 
     { 
      row.ToolTip = "Class definition..."; 
     } 

    } 

我得到「無法適用於索引類型爲‘System.Windows.Controls.DataGridRow’的表現。」如果我有一行爲什麼我不能訪問它的項目?如何訪問單元格[i]?

編輯:我非常抱歉,我需要訪問給定行中的第一個單元格,就像現在這樣做。我仍然有同樣的錯誤。謝謝

+0

你已經在行;你不需要索引它。您是否試圖檢查是否有名爲'Class?'的列?如果是這樣,您可以檢查該行的DataBoundItem對象,如果需要的話可能會對該值進行集成。 – codechurn 2012-02-06 17:45:25

回答

2

試試這個,讓我們知道,如果它的工作原理:

DataGridRow row = e.Row; 
DataRowView rView = row.Item as DataRowView 
if(rView != null && rView.Item["AssemblySummary"].ToString().Contains("Class")) 
    row.ToolTip = "Class definition..."; 

如果沒有的話,那可能是可視行已經加載,但數據尚未結合。

+0

這對我不起作用。我假設數據還沒有被綁定。那麼我如何獲取數據呢? – nerdalert 2017-08-25 06:36:13

0

您可以使用DataContext屬性獲取行的數據。

嘗試此鏈接http://techiethings.blogspot.com/2010/05/get-wpf-datagrid-row-and-cell.html

+0

謝謝。我想這隻能用XAML中設置的數據綁定工作。但是這個DataGrid從兩個不同的源代碼獲取信息(在不同的時間),像這樣DataGrid.ItemsSource = DataTable1.DefaultView或DataGrid.ItemsSource = DataTable2.DefaultView。所以我試圖直接獲取DataGrid單元格的內容。可能嗎? – Vitaly 2012-02-06 17:45:48

相關問題