我在一個名爲MainWindow的窗口上有一個DataGrid控件。在MainWindow中,我使用下面的代碼打開另一個窗口NewCustomerWindow。從另一個窗口更新WPF中的DataGrid
NewCustomerWindow newCustomerWindow = new NewCustomerWindow();
newCustomerWindow.ShowDialog();
在NewCustomerWindow我有文本框如果有人可以進入有關客戶的信息,然後將這些信息保存到數據庫的形式。之後,我保存這些信息,我要更新的數據網格的主窗口,所以我用下面的代碼
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服務的未來,這是不是一個好的選擇。那麼,這個問題有什麼好的解決方案?先謝謝你。
你應該綁定ÿ我們的dataGrid到一些viewmodels依賴屬性,並更新屬性而不是尋找主窗口 – makc
Hello @makc。你能否提供一些關於你的建議的進一步信息,因爲我不熟悉這一點。謝謝。 –
什麼是你的DataGrid的/窗口的DataContext? –