我一直在寻找解决方案几个小时,但我找不到任何有用的东西。问题是:如何自动将信息添加到DataGrid的下一行,主要问题是我可以添加我想要的行数,但只能在第一次调用函数时添加。我知道它与绑定有关,所以这是我的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Data;
using System.Windows.Forms;
using System.Web;
namespace Platforma
{
public class MessageDataGrid
{
System.Windows.Controls.DataGrid data;
int Number = 1;
#region konstruktor
public MessageDataGrid(System.Windows.Controls.DataGrid dataGrid)
{
this.data = dataGrid;
}
#endregion
public void DataGridConnectionOK()
{
List<table> dialog = new List<table>();
dialog.Add(new table() { No = Number.ToString(), Date = DateTime.Today.ToShortDateString(), Time = DateTime.Now.ToShortTimeString(), Message = "Connection is set correctly", Type = "" });
Number++;
data.ItemsSource = dialog;
}
}
public class table
{
public string No { get; set; }
public string Type { get; set; }
public string Date { get; set; }
public string Time { get; set; }
public string Message { get; set; }
}
}
我想在调用DataGridConnectionOK()
后添加新行。我曾尝试在DataGrid对象(data.Items.Add(new DataGridRow())
)的Items集合中添加项目,但我收到了有关未知异常的信息。这是XAML代码:
<DataGrid x:Name="DataGridInfos" ItemsSource ="{Binding}" HorizontalAlignment="Left" Height="162" Margin="0,369,0,0" VerticalAlignment="Top" Width="718" Foreground="#FF0043FF" Background="White" BorderBrush="#FF0081FF" AutoGenerateColumns="False" CanUserResizeRows="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding No}" Header="No" Width="30" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding Type}" Header="Type" Width="40" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding Date}" Header="Date" Width="100" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding Time}" Header="Time" Width="100" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding Message}" Header="Message" Width="448" IsReadOnly="True"/>
</DataGrid.Columns>
</DataGrid>
答案 0 :(得分:0)
据我所知,最好的解决方案是在viewmodel中创建一个List,并将列表数据绑定到datagrid;您将更改列表(添加/删除/修改),网格将相应更改。
您可以在这里找到MVVM的一些示例代码:https://www.codeproject.com/Articles/819294/WPF-MVVM-step-by-step-Basics-to-Advance-Level
答案 1 :(得分:0)
问题已经解决了 - 问题在于对象dialog
- 它是List
个table
类对象,但它不是,让我们来比如,在添加新数据时刷新,因此解决方案是添加而不是List
类型ObservableCollection
类对象,这是动态数据集合。