I have got a list view and bind ItemSource to public ObservableCollection StockList { get; set; }. I initiated the StoclList in the Constructor method. I am getting filtered stock list from a ViewModel and adding these items to this StcokList but somehow ListView doesn't show the list items.
But if i set ItemsSource="{Binding ListFromViewModel}" It works..
public partial class MainWindow : Window {
public MainWindowViewModel viewModel;
public ObservableCollection<StockModel> StockList { get; set; }
//Constructor
public MainWindow()
{
StockList = new ObservableCollection<StockModel>();
InitializeComponent();
viewModel = new MainWindowViewModel();
this.DataContext = viewModel;
}
private async void BtnSelectFile_Click(object sender, RoutedEventArgs e)
{
GetData();
viewModel.StartProcessing(progress);
StockList.Clear();
for (int i = 0; i < viewModel.ListOfStocks.Count; i++)
{
StockList.Add(viewModel.ListOfStocks[i]);
}
}
And my XAML file is like this
<ListView Grid.Row="1" Grid.Column="1" x:Name="LvErrorList" ItemsSource="{Binding StockList}">
UPDATE: If i use this code, it start working. But I am not sure why!!!
LvErrorList.ItemsSource = StockList;
ItemsSource="{Binding StockList, RelativeSource={RelativeSource AncestorType=Window}}"
. But the property should of course be in a view model class, when you already have one. - Clemens