我在名为 MainWindow 的窗口上有一个 DataGrid 控件。在 MainWindow 中,我在单击按钮时使用以下代码打开另一个名为 NewCustomerWindow 的窗口。
NewCustomerWindow newCustomerWindow = new NewCustomerWindow();
newCustomerWindow.ShowDialog();
在 NewCustomerWindow 中,我有一个带有文本框的表单,有人可以在其中输入有关客户的信息,然后将这些信息保存到数据库中。保存这些信息后,我想更新 MainWindow 中的 DataGrid,所以我使用以下代码
var mainWindow = Application.Current.Windows
.OfType<MainWindow>()
.FirstOrDefault(window => window is MainWindow);
mainWindow.customersGrid.Items.Add(new
{
CustomerID = txtCustomerID.Text,
CompanyName = txtCompanyName.Text,
ContactName = txtContactName.Text,
ContactTitle = txtContactTitle.Text,
Address = txtAddress.Text,
City = txtCity.Text,
Region = txtRegion.Text,
PostalCode = txtPostalCode.Text,
Country = txtCountry.Text,
Phone = txtPhone.Text,
Fax = txtFax.Text
});
上面的代码返回以下错误:“使用 ItemsSource 时操作无效。请改用 ItemsControl.ItemsSource 访问和修改元素。”
customersGrid 是 MainWindow 中 DataGrid 的名称,其结构如下。
<DataGrid AutoGenerateColumns="False" HorizontalAlignment="Stretch" Margin="8,29,8,8" Name="customersGrid" VerticalAlignment="Stretch" Loaded="customersGrid_Loaded">
<DataGrid.Columns>
<DataGridTextColumn Width="Auto" Binding="{Binding CustomerID}" Header="Κωδικός Πελάτη"/>
<DataGridTextColumn Width="Auto" Binding="{Binding CompanyName}" Header="Όνομα Εταιρίας"/>
<DataGridTextColumn Width="Auto" Binding="{Binding ContactName}" Header="Όνομα Επαφής"/>
<DataGridTextColumn Width="Auto" Binding="{Binding ContactTitle}" Header="Τίτλος Επαφής"/>
<DataGridTextColumn Width="Auto" Binding="{Binding Address}" Header="Διεύθυνση"/>
<DataGridTextColumn Width="Auto" Binding="{Binding City}" Header="Πόλη"/>
<DataGridTextColumn Width="Auto" Binding="{Binding Region}" Header="Περιοχή"/>
<DataGridTextColumn Width="Auto" Binding="{Binding PostalCode}" Header="Ταχυδρομικός Κώδικας"/>
<DataGridTextColumn Width="Auto" Binding="{Binding Country}" Header="Χώρα"/>
<DataGridTextColumn Width="Auto" Binding="{Binding Phone}" Header="Τηλέφωνο"/>
<DataGridTextColumn Width="Auto" Binding="{Binding Fax}" Header="Fax"/>
</DataGrid.Columns>
</DataGrid>
我想一个解决方案是使用所有数据再次设置 DataGrid 的 ItemsSource 属性,但这不是一个好的选择,因为客户数据来自带来大量记录的 wcf 服务。那么,有什么好的方法可以解决这个问题呢?先感谢您。