c# - WPF DataGrid 仅从构造函数填充
问题描述
我觉得我错过了一些非常小的东西,但我无法弄清楚问题是什么。我已经在一个简单的应用程序中提取了我正在尝试做的事情(以及问题)。
在我的MainWindow.xaml我有(只有一个数据网格和一个按钮):
<Grid>
<Grid.RowDefinitions>
<RowDefinitions Height="auto"/>
<RowDefinitions Height="auto"/>
<Grid.RowDefinitions>
<Button Content="Click me" Click="Button_Click"/>
<DataGrid AutoGenerateColumns="True" ItemsSource="{Binding TableResult}" Grid.Row="1"/>
</Grid>
在我的MainWindow.xaml.cs(MainWindow 构造函数和按钮事件)中:
private MyViewModel myView;
public MainWindow()
{
InitializeComponent();
myView = new MyViewModel();
DataContext = myView;
}
private void Button_Click(...) => myView.FillTable();
在我的MyViewModel.cs 中:
class MyViewModel : INotifyPropertyChanged
{
private DataTable tableResult = new DataTable();
public DataTable TableResult
{
get => tableResult;
set
{
if(tableResult == value)
return;
tableResult = value;
NotifyPropertyChanged(); // The event handler works fine, I just didn't type it out
}
public MyViewModel()
{
FillTable();
}
public void FillTable()
{
TableResult.Clear();
TableResult.Columns.Clear();
TableResult.Columns.Add(new DataColumn() { ColumnName = "Color" });
TableResult.Columns.Add(new DataColumn() { ColumnName = "Is it Cool?" });
TableResult.Rows.Add(new object[]{ "Red", "Yes" });
TableResult.Rows.Add(new object[]{ "Pink", "Absolutely not" });
}
}
问题出在某个地方(我认为),MyViewModel
该类可以正常工作,但前提是FillTable()
在构造函数内部。每当我FillTable()
退出构造函数并尝试FillTable()
通过单击按钮进行调用时,表格永远不会出现。
同样,如果我离开FillTable()
构造函数,表格生成就好了!但是,如果我单击该按钮,表格将完全消失并且永远不会重新生成。
我错过了什么吗?如果我将这种类型的方法与 an ObservableCollection
of一起使用string
,它可以正常工作。如果有人可以指出我正在犯的这个错误或我没有看到的东西,请提前感谢。
解决方案
你应该试试这个
public void FillTable()
{
var res = new DataTable();
res.Columns.Add(new DataColumn() { ColumnName = "Color" });
res.Columns.Add(new DataColumn() { ColumnName = "Is it Cool?" });
res.Rows.Add(new object[]{ "Red", "Yes" });
res.Rows.Add(new object[]{ "Pink", "Absolutely not" });
TableResult = res;
}
我相信您的问题是由于仅操作 TableResult 根本不会调用 set 属性,只有在您为属性分配了新的 TableResult 时才会调用它。
推荐阅读
- python - 如何使用 python opencv 拟合图像中的感兴趣区域以保持纵横比?
- php - 从两个表中获取 PHP MYSQL 查询
- mysql - 每天查看计数器的 SQL 数据库结构
- ruby-on-rails - Rails get list of routes as paths with parameters
- javascript - javascript - 获取一周中第二天的日期?
- javascript - MUI 数据表未注册选项
- vagrant - 使用 salt 来确定 Vagrant 主机的 IP?
- python - 多处理池的 Jupyter 笔记本问题
- node.js - 有没有办法根据 loadSync 方法使用的选项生成 pb 文件?
- r - 如何在ggplot2中按构面对图例进行分组或获取单独的图例