На форме есть 2 грида. DataContext
для формы - отдельный класс(ViewModel). Первый грид сразу заполняется данными(в конструкторе класса). При щелчке на строку этого грида должен заполниться второй. Вот разметка второго :
<DataGrid MinHeight="140" VerticalAlignment="Top" Margin="0,220,0,0" ItemsSource="{Binding TotalInvestCollectionByu, Mode=TwoWay}" AutoGenerateColumns="False" RowBackground="#FFD8C096" >
<DataGrid.Columns>
<DataGridTextColumn Header="Title" Width="*" Binding="{Binding Title}">
</DataGridTextColumn>
<DataGridTextColumn Header="Isin" MinWidth="50" Binding="{Binding Isin}">
</DataGridTextColumn>
<DataGridTextColumn Header="Date" MinWidth="50" Binding="{Binding Date}">
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
источник данных TotalInvestCollectionByu является публичным свойством класса ViewModel:
public static ObservableCollection<TotalInvest> TotalInvestCollectionByu { get; set; }
public class TotalInvest
{
public string Title { get; set; }
public string Isin { get; set; }
public string Date { get; set; }
}
И есть команда которая срабатывает при выборе строки первого грида. Коммадна по идеи должна вызывать заполнение TotalInvestCollectionByu данными :
public ICommand SelectDetails
{
get
{
return new RelayCommand(() =>
{
TotalInvestCollectionByu = new ObservableCollection<TotalInvest>();
TotalInvestCollectionByu.Add(new TotalInvest() { Title ="newTitle", Isin ="newisin", Date ="now"});
}); }
}
Однако происходит так, что в коллекцию TotalInvestCollectionByu новые значения хотя и добавляются, в самом гриде не отображаются. как это исправить ?
Проблема в том, что что вы заменяете коллекцию в TotalInvestCollectionByu
на новый объект. ObservableCollection
даёт нотификации об изменении внутри коллекции (то есть, списка элементов), но об подмене объекта этой самой коллекции сообщить, понятно, не может никак. Поэтому ваш DataGrid
продолжает наблюдать за старым экземпляром коллекции, в котором уже, очевидно, ничего не меняется.
Ваш VM-класс должен имплементировать INotifyPropertyChanged
, и отправлять NotifyPropertyChanged
в сеттере TotalInvestCollectionByu
. В качестве альтернативы, вы можете просто никогда не менять TotalInvestCollectionByu
, а очищать её при помощи .Clear()
.
Я работаю с VK APIПри запросах с браузера все работает стабильно, но при запросах из моей программы английские символы возвращаются правильно,...
У меня в конторе, где я работаю, есть множество кастомных библиотекВ том числе есть свой DAL для базы данных MSSQL
Каким способом можно определить если Control полностью отрисован в контейнеренужно в цикле проверить все дочерние контролы и определить какой...