У меня есть способ обновить мой DataGrid
после добавления/изменения/удаления данных.Обновление DataGrid не работает, когда я использую метод из другого класса
public void EmployeesDbConnection<T>(T dbset, string collectionName, Page page) where T : class
{
CompanyManagerContext db = new CompanyManagerContext();
var collectionViewSource = page.FindResource(collectionName) as CollectionViewSource;
db.Set<T>().Load();
collectionViewSource.Source = db.Set<T>().Local;
collectionViewSource.View.Refresh();
}
Моя проблема заключается в том, что мой метод работает только тогда, когда я использую его в том же окне/страницы, где мой DataGrid есть.
Сценарий является:
У меня есть DataGrid
в EmployeePage. У меня есть ДобавитьButton
в EmployeePage.
Когда я нажимаю ДобавитьButton
, на дисплее он показывает новый Window
(AddEmployeeWindow) с полями для ввода данных сотрудника например (имя, фамилия, дата рождения и т.д.) и добавить, сброс и отмена кнопки.
Когда я нажимаю ДобавитьButton
, мои вставки данных в базу данных, но не DataGrid
обновить будет.
Когда я делаю то же самое на странице сотрудника, он обновляется.
В EmployeePage я бегу метод, как это (DataGrid
освежает):
dbManagement.EmployeesDbConnection(newEmployee, "CollectionViewSource", this);
В AddWindow я бегу метод, как это (DataGrid
не освежающий):
dbManagement.EmployeesDbConnection(newEmployee, "CollectionViewSource", empPage);
с
readonly EmployeePages empPage = new EmployeePages();
Его код крепления XAML:
<Page.Resources>
<CollectionViewSource x:Key="CollectionViewSource" d:DesignSource="{d:DesignInstance {x:Type models:Employee}, CreateList=True}"></CollectionViewSource>
</Page.Resources>
<DataGrid x:Name="EmployeesDataGrid" HorizontalAlignment="Left" Margin="10,355,0,0" VerticalAlignment="Top" Height="305" Width="880"
DataContext="{StaticResource CollectionViewSource}" AutoGenerateColumns="False" EnableRowVirtualization="True" ItemsSource="{Binding}"
RowDetailsVisibilityMode="VisibleWhenSelected" IsReadOnly="True">
<DataGrid.Columns>
<DataGridTextColumn x:Name="IdColumn" Header="Id" Binding="{Binding Id}"/>
<DataGridTextColumn x:Name="FirstNameColumn" Header="First Name" Binding="{Binding FirstName}"/>
<DataGridTextColumn x:Name="LastNameColumn" Header="Last Name" Binding="{Binding LastName}"/>
<DataGridTextColumn x:Name="MobilePhoneNumberColumn" Header="Mobile Phone" Binding="{Binding MobilePhoneNumber}"/>
<DataGridTextColumn x:Name="EmailAdressColumn" Header="Email" Binding="{Binding MailAdress}"/>
<DataGridTextColumn x:Name="EmployeedDate" Header="Employeed Date" Binding="{Binding EmployedDate}"/>
<DataGridTextColumn x:Name="BirthdayDate" Header="Birthday Date" Binding="{Binding BirthDate}"/>
</DataGrid.Columns>
</DataGrid>
Если вы правильно применили привязки WPF, нет необходимости обновлять. Сетка будет обновляться из-за двусторонней привязки. – Prajwal
@Prajwal Я отредактировал мое сообщение и добавил информацию о привязках. что с ними не так? – MadMike6661
Вы не являетесь обязательным. 'ItemsSource =" {Binding} "' вы ссылаетесь на представление напрямую. – Prajwal