перезагрузка или сброс главного окна в WPF

#c# #wpf #windows #datagrid

#c# #wpf #Windows #datagrid

Вопрос:

У меня есть главное окно, в котором есть datagrid и ссылка для импорта данных. Когда пользователь нажимает на ссылку, он должен просмотреть, и пусть пользователь выбирает файл для импорта. И это открывает другое окно, чтобы показать успешный импорт данных в базу данных.

Теперь я хочу показать данные в datagrid в главном окне. Итак, в основном я хочу сбросить главное окно, чтобы оно могло отображать импортированные данные в WPF.

Я попытался вызвать внутреннюю функцию (главного окна), чтобы закрыть () и инициализировать и привязать данные к таблице данных. Но, похоже, это не работает.

Есть ли какой-нибудь простой способ сделать это?

Комментарии:

1. на самом деле есть ли какой-либо способ обновить datagrid с коллекцией или обновить, что коллекция была изменена?

2. Думаю, я думал о INotifyCollectionChanged.

Ответ №1:

в зависимости от способа настройки привязки данных для datagrid, вы могли бы просто вызвать ResetBindings в соответствующем источнике привязки.

итак, допустим, у вас есть bindingsource b в вашем главном окне, и ваша datagrid или любой другой элемент управления привязан к этому bindingsource. для свойства datasource в b задано значение некоторой коллекции, содержащей ваши данные. если вы хотите «обновить» все элементы управления, привязанные к b, просто вызовите ResetBindings на b.

вы также могли бы использовать коллекцию, которая реализует IBindingList, которая уведомляла бы ваш bindingsource о добавлении элементов и т.д.

Ответ №2:

Просто используйте привязку к данным и обновите исходный код. Используете ли вы сериализуемый класс, который реализует INotifyPropertyChanged? Для работы с привязкой данных необходимо реализовать INotify.

Также загляните в NavigationWindow и страницы. Это упрощает создание приложений с одним окном.