I have some ObservableCollections bound to some WPF controls and they work fine. And I have a function where I completely replace these ObservableCollections with reassignment and populate them again, but after that the WPF controls are not updated.
Or is this connecting connection established only at startup once, and then I should never repeat the initialization of ObservableCollections, but only change them?
EDIT:
public partial class MainWindow : Window { ObservableCollection<EffectViewModel> effects; public ObservableCollection<EffectViewModel> Effects { get { return this.effects; } set { this.effects = value; this.RaisePropertyChanged ( "Effects" ); } } public event PropertyChangedEventHandler PropertyChanged; void RaisePropertyChanged ( string name ) { var handler = this.PropertyChanged; if ( handler != null ) handler ( this, new PropertyChangedEventArgs ( name ) ); } } public void LoadEffects ( string path, string filename ) {
EDIT2:
<Window x:Class="EffectWindow.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" DataContext="{Binding RelativeSource={RelativeSource Self}}" Title="Effect Display" Height="200" Width="700" <DockPanel VerticalAlignment="Stretch"> <ListView ItemsSource="{Binding Effects}" AlternationCount="2" DockPanel.Dock="Top" HorizontalContentAlignment="Stretch"> <ListView.View> <GridView> <GridViewColumn Width="70" Header="GPU"> <GridViewColumn.CellTemplate> <DataTemplate> <CheckBox Margin="0" HorizontalAlignment="Center" IsChecked="{Binding [GPU], Mode=TwoWay}"/> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> <GridViewColumn Width="70" Header="CPU"> <GridViewColumn.CellTemplate> <DataTemplate> <CheckBox Margin="0" HorizontalAlignment="Center" IsChecked="{Binding [CPU], Mode=TwoWay}"/> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> </GridView> </ListView.View> </ListView> </DockPanel> </Window>
Joan venge
source share