最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#實現(xiàn)改變DataGrid某一行和單元格顏色的方法

 更新時間:2014年09月12日 10:59:28   投稿:shichen2014  
這篇文章主要介紹了C#實現(xiàn)改變DataGrid某一行和單元格顏色的方法,主要涉及DataGrid控件的添加與使用、數(shù)據(jù)源的綁定、單元格與行的獲取等操作。需要的朋友可以參考下

本文所述實例主要實現(xiàn)WPF項目中C#改變DataGrid某一行和單元格顏色的功能。分享給大家供大家參考。具體方法如下:

如果要改變DataGrid某一行的顏色、高度,以及某個單元格的顏色、單元格字體的顏色,就必需取到datagrid的一行和一行的單元格,通過查找相關(guān)資料及測試總結(jié)出如下實例代碼,現(xiàn)記錄下來便于大家參考使用。

1、前臺WPF界面添加一個DataGrid控件,并添加兩列(便于編寫,達到目的即可)

<DataGrid AutoGenerateColumns="False" Height="642" HorizontalAlignment="Left" Margin="131,57,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="799" CanUserAddRows="True" LoadingRow="dataGrid1_LoadingRow" GridLinesVisibility="None">
  <DataGrid.ColumnHeaderStyle >
 <Style TargetType="DataGridColumnHeader">
   <Setter Property="Height" Value="50"></Setter>
 </Style>
  </DataGrid.ColumnHeaderStyle>
  <DataGrid.Columns>
 <DataGridTextColumn Header="id" Binding="{Binding Path=id}" ElementStyle="{StaticResource dgCell}"></DataGridTextColumn>
 <DataGridTextColumn Header="name" Binding="{Binding Path=name}" ElementStyle="{StaticResource dgCell}"></DataGridTextColumn>
  </DataGrid.Columns>
</DataGrid>

2、創(chuàng)建一個數(shù)據(jù)源并綁定,此處是創(chuàng)建一個datatable

DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("id", typeof(int)));
dt.Columns.Add(new DataColumn("name", typeof(string)));

for (int i = 0; i < 6; i++)
{
 DataRow dr = dt.NewRow();
 if (i == 3)
 {
   dr["id"] = DBNull.Value;
   dr["name"] = DBNull .Value ;
   dt.Rows.Add(dr);
 }
 else
 {
   dr["id"] = i;
   dr["name"] = "tom" + i.ToString();
   dt.Rows.Add(dr);
 }
}

this.dataGrid1.CanUserAddRows = false;
this.dataGrid1.ItemsSource = dt.DefaultView;

3、獲取單行

for (int i = 0; i < this.dataGrid1.Items.Count; i++)
{
 DataRowView drv = dataGrid1.Items[i] as DataRowView;
 DataGridRow row = (DataGridRow)this.dataGrid1.ItemContainerGenerator.ContainerFromIndex(i);

 if (i == 2)
 {
   row.Height = 50;
   row.Background = new SolidColorBrush(Colors.Blue);
   drv["id"] = 333;
 }

 if (drv["id"] == DBNull.Value)
 {
   row.Background = new SolidColorBrush(Colors.Green);
   row.Height = 8;
 }
}

4、獲取單元格

for (int i = 0; i < this.dataGrid1.Items.Count; i++)
{
 DataRowView drv = dataGrid1.Items[i] as DataRowView;
 DataGridRow row = (DataGridRow)this.dataGrid1.ItemContainerGenerator.ContainerFromIndex(i);
         if (i == 4)
 {
   DataGridCellsPresenter presenter = GetVisualChild<DataGridCellsPresenter>(row);
   DataGridCell cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(1);
   cell.Background = new SolidColorBrush(Colors.Red);
 }
}

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

  return childContent;
}

5、如果在項目中把創(chuàng)建數(shù)據(jù)源、綁定數(shù)據(jù)源、對datagrid進行操作(改變行的顏色、高度)都寫在一個事件中,其中在取datagrid的row時出現(xiàn)錯誤:未將對象引用設(shè)置到對象的實例。

解決的方法:

//創(chuàng)建數(shù)據(jù)源、綁定數(shù)據(jù)源
    
if (!Window.GetWindow(dataGrid1).IsVisible)
{
 Window.GetWindow(dataGrid1).Show();
}
dataGrid1.UpdateLayout();

//可以獲取某一行、某一行的單元格

相信本文所述對大家的C#程序設(shè)計有一定的借鑒作用。

相關(guān)文章

  • C#中IList<T>與List<T>的區(qū)別深入解析

    C#中IList<T>與List<T>的區(qū)別深入解析

    本篇文章主要是對C#中IList<T>與List<T>的區(qū)別進行了詳細的分析介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • 詳解WPF中的APP生命周期以及全局異常捕獲

    詳解WPF中的APP生命周期以及全局異常捕獲

    這篇文章主要為大家詳細介紹了WPF中的APP生命周期以及全局異常捕獲的相關(guān)資料,文中的示例代碼講解詳細,對我們學(xué)習(xí)WPF有一點的幫助,需要的可以了解一下
    2023-03-03
  • CAD2008+VS2008開發(fā)ObjectARX加載失敗問題(推薦)

    CAD2008+VS2008開發(fā)ObjectARX加載失敗問題(推薦)

    這篇文章主要介紹了CAD2008+VS2008開發(fā)ObjectARX加載失敗問題,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • C#確保只有一個實例在運行的方法

    C#確保只有一個實例在運行的方法

    這篇文章主要介紹了C#確保只有一個實例在運行的方法,涉及C#進程操作的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • C#實現(xiàn)航班預(yù)訂系統(tǒng)

    C#實現(xiàn)航班預(yù)訂系統(tǒng)

    這篇文章主要為大家詳細介紹了C#實現(xiàn)航班預(yù)訂系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • C#中winform使用相對路徑讀取文件的方法

    C#中winform使用相對路徑讀取文件的方法

    這篇文章主要介紹了C#中winform使用相對路徑讀取文件的方法,實例分析了C#使用相對路徑讀取文件的技巧與實際應(yīng)用,需要的朋友可以參考下
    2015-01-01
  • C# 使用modbus 讀取PLC 寄存器地址的方法

    C# 使用modbus 讀取PLC 寄存器地址的方法

    今天通過本文給大家介紹C# 使用modbus 讀取PLC 寄存器地址的方法,使用的組件Nmodbus,文中通過實例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2021-10-10
  • C# Random類的正確應(yīng)用方法

    C# Random類的正確應(yīng)用方法

    這篇文章主要介紹了C# Random類的正確應(yīng)用方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • C#獲取Visio模型信息的簡單方法示例

    C#獲取Visio模型信息的簡單方法示例

    這篇文章主要給大家介紹了關(guān)于C#獲取Visio模型信息的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • C#?代碼大小寫規(guī)范說明

    C#?代碼大小寫規(guī)范說明

    這篇文章主要介紹了C#?代碼大小寫規(guī)范說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06

最新評論

安龙县| 平舆县| 琼结县| 襄城县| 兴和县| 上林县| 宕昌县| 黄冈市| 新民市| 东安县| 汨罗市| 小金县| 弋阳县| 高州市| 资溪县| 稻城县| 昌宁县| 留坝县| 印江| 桃园县| 台安县| 高陵县| 申扎县| 雅安市| 临安市| 湟源县| 屏南县| 和静县| 甘谷县| 呼玛县| 阳曲县| 即墨市| 县级市| 朝阳区| 漾濞| 阿瓦提县| 崇礼县| 韩城市| 莱阳市| 德格县| 海盐县|