У меня есть приложение WPF с окном XAML, содержащим несколько кнопок и DataGrid. Когда нажимаются кнопки, в фоновом режиме выполняется некоторая логика c, которая создает список какого-либо типа и, наконец, назначает список свойству модели (MVVM) «DataSource», с которым ItemSource DataGrid связан как:
<DataGrid x:Name="DataGrid" Grid.Row ="10" ...
ItemsSource="{Binding Path=DataSource, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnTargetUpdated=True}">
Когда содержимое DataSource изменяется, DataGrid узнает об этом и показывает новые данные. Пока все хорошо, приложение работает как задумано и без проблем. Я могу скопировать вывод bin сборки и успешно запустить его повсюду.
Затем идет ClickOnce publi sh. Если опубликовано так, что оно устанавливается из общей папки Un c и устанавливается с нее, например, \ SomeServer \ SomePath \ InstallFromDir \, все по-прежнему работает нормально.
Но если опубликовано так, чтобы оно устанавливалось с и устанавливалось с онлайн-адреса, например, http://companydomain.com/InstallFromDir/, DataGrid просто не обновляется.
Ничего другого не изменится, кроме метод приложения и доступность обновлений от un c до сети.
То, что я собрал из точек трассировки отладки, все еще применяется. Список на заднем плане строится заново. Он присваивается свойству DataSource (если я проверяю содержащиеся в нем данные, оно содержит новые данные). Но если я получаю доступ к Источнику данных DataGrids, он все еще содержит OLD, исходные данные.
Я попытался переназначить DataSource для ItemsSource - не помогает. Я попытался повторно связать данные, когда они изменяются программно, например:
var sourceBinding = new System.Windows.Data.Binding
{
Path = new PropertyPath("DataSource"),
Mode = BindingMode.TwoWay,
NotifyOnSourceUpdated = true,
NotifyOnTargetUpdated = true
};
BindingOperations.SetBinding(((MainWindow)_window).DataGrid,
System.Windows.Controls.DataGrid.ItemsSourceProperty, sourceBinding);
и даже изменить xaml так, чтобы он был связан ТОЛЬКО в коде:
<DataGrid x:Name="DataGrid" Grid.Row ="10" ... >
и он все еще работает так же, как описано выше: работает как прямое копирование или не c установка, но не работает как веб-установка.
Я полностью потерялся в поиске причины или поиске обходных путей. Кто-нибудь сталкивался с этим раньше? Любые идеи? Большое спасибо!
Обновление: Сначала я думал, что это проблема DataGrid, но с тех пор я также пытался заменить DataGrid на ListView, и он тоже не работает.