/若datagrid出现滚动条可能会出现问题需要加上下面俩句话。
//因为出滚动条时,为了显示加速,datagrid会加载一部分数据。另一些数据当滚动时在加载进去 这样初始化获取不到这些数据。
//在datagrid上添加上以下俩句话可以避免预加载数据,使数据全部加载出来
EnableColumnVirtualization="False" EnableRowVirtualization="False"
// 页面加载,数据初始化
- private void Dict_PrSCList_Load(object sender, RoutedEventArgs e)
- {
- BingData();
- BingComplete();
- }
//绑定数据
- private void BingData()
- {
- DataTable dt;
- dt = MngDBFuncWPF.listPrSCName();
- lbCount.Content = "共找到 " + dt.Rows.Count + " 条符合条件的记录";
- udgList.ItemsSource = dt.DefaultView;
- }
//绑定数据后设置模板列中按钮显示和不显示
- private void BingComplete()
- {
- for (int i = 0; i < this.udgList.Items.Count; i++)
- {
- //int index = dataGrid.CurrentCell.Column.DisplayIndex;
- //获取行 并转换为DataGridRow
- var cntr = udgList.ItemContainerGenerator.ContainerFromIndex(i);
- if (cntr == null)
- {
- udgList.UpdateLayout();
- //datagrid.ScrollIntoView(datagrid.Items[rowIndex]);
- cntr = (DataGridRow)udgList.ItemContainerGenerator.ContainerFromIndex(i);
- //cntr.IsSelected = true;
- }
- if (cntr == null) return;
- DataGridRow ObjROw = (DataGridRow)cntr;
- //定义列
- DataGridTemplateColumn templeColumn = udgList.Columns[0] as DataGridTemplateColumn;
- if(templeColumn == null) return;
- //object item;
- //item = udgList.CurrentCell.Item;
- //item = udgList.Columns[0].GetCellContent(ObjROw);
- //FrameworkElement element = templeColumn.GetCellContent(item);
- //获取单元格 通过列和行的交汇处 获取单元格
- FrameworkElement element = templeColumn.GetCellContent(ObjROw);
- if (element == null) return;
- //通过 Name获取该单元格下的button元素
- Button btnUpdateNum = templeColumn.CellTemplate.FindName("BTBJ", element) as Button;
- //设置其是否隐藏
- btnUpdateNum.Visibility = Visibility.Hidden;
- }
- }