У меня datagrid забинден sourceitems к ObservableCollection, когда я изменяю что-нибудь из коллекции, коллекция изменяется но view не показывает пока не кликну на строку. В чем проблема?
<DataGrid CanUserResizeRows="True"
RowHeight="32"
SelectionUnit="FullRow"
SelectionMode="Extended"
Grid.Row="2" Background="White"
ItemsSource="{Binding Configs, UpdateSourceTrigger=PropertyChanged}"
AutoGenerateColumns="False"
ColumnHeaderStyle="{DynamicResource DataGridColumnHeaderStyle}">
<DataGridTextColumn Header="Description"
Binding="{Binding Path=Description, UpdateSourceTrigger=PropertyChanged}"
Width="*"/>
MVVM
private ObservableCollection<Config> _configs = new ObservableCollection<Config>();
public ObservableCollection<Config> Configs
{
get {
return _configs;
}
set {
_configs = value;
OnPropertyChanged("Configs");
}
}
OnPropertyChangedуObservableCollectionлишне, она сама имеет в себе все, что нужно для обновления. Достаточно простоpublic ObservableCollection<Config> Configs {get; set;}и дальше инициализация и заполнение. Во вторыхDataGridTextColumnдолжны находиться внутри<DataGrid.Columns>, как показано у вас - он воспримет это за итем, а не за столбец. В третьих уItemsSourceделатьUpdateSourceTriggerбессмысленно. Раз привязали и забыли про это. Ну и на последок, воспроизвел весь ваш пример - все обновляет сразу при написание... – EvgeniyZ Jul 23 '18 at 11:22Configдолжен реализовывать INPC и у нужных свойств (Descriptionв вашем случае) должно быть вызвано в set OnPropertyChanged (как сейчас у вас сделано для коллекции). – EvgeniyZ Jul 23 '18 at 11:36OnPropertyChanged. Можете посмотреть этот ответ, там реализация INPC идет в отдельном классе, аStudentViewModelнаследуется от него и вызывает в нужных свойствах обновление. – EvgeniyZ Jul 23 '18 at 11:41textBox1.Text = "111";или что то подобное, максимум - это DataContext, далее прост идет работа с данными, коллекциями и прочим, View не трогаем!. Ну и следите за тем, что бы каждая VM/M отвечала только за свое одно что то. Скажем автобус, в автобусе люди. Вот автобус - отдельный объект, который содержит другие объекты (мотор, колеса, люди и др). Люди - это другой объект, со своими объектами и функциями. Вот с таким разграничением вы особо нечего не нарушите. – EvgeniyZ Jul 23 '18 at 11:49