Witam, jestem początkującym "programistą" C# i napotkałem na pewien problem jeśli chodzi o bindowanie ListView. Chciałbym uzyskać następujący efekt. Po kliknięciu buttona Load otwiera mi się okno dialogowe, z którego mogę sobie wybrac piosenki, których tytuły zapiszą się w liście. ListVeiw jest bindowany do tej listy więc sądziłem, że po załadowaniu tych tytułów do listy automatycznie pojawią się one w ListVeiw lecz jednak tak sie nie dzieje. Tutaj mój kod:
Tutaj fragmenty kody xaml:
<ListView x:Name="FilesInPlayList" ItemsSource="{Binding listOfLoadedFiles, UpdateSourceTrigger=PropertyChanged}" BorderThickness="0" >
<Button x:Name="Load" Height="25" Content="Load" Command="{Binding LoadFilesCommand, Mode=TwoWay}" />
` class ViewModel : BindableBase
{
public ICommand LoadFilesCommand { get; set; }
public List<string> _listOfLoadedFiles;
public List<string> listOfLoadedFiles
{
get
{
return _listOfLoadedFiles;
}
private set
{
_listOfLoadedFiles = value;
RaisePropertyChanged("listOfLoadedFiles");
}
}
public ViewModel()
{
LoadFilesCommand = new DelegateCommand(LoadFilesAction);
}
private void LoadFilesAction()
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Multiselect = true;
listOfLoadedFiles = new List<string>();
if (openFileDialog.ShowDialog() == true)
{
foreach (string filename in openFileDialog.FileNames)
{
//dodaje do listy tylko nazwy plikow
listOfLoadedFiles.Add(System.IO.Path.GetFileName(filename));
}
}
}
}`
i klasa main
`public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
ViewModel vModel = new ViewModel();
Load.DataContext = vModel;
FilesInPlayList.DataContext = vModel;
}
}`
Chciałem dodać jeszcze, że gdy zamieniłem tą listę listOfLoadedFiles na zmienną string to działało(oczywiście pobierało tylko jeden tytuł).
Gdy robiłem cos takiego listOfLoadedFiles.Add("cos"); w metodzie LoadFilesAction() ale przed tym ifem to dziala, dodaje prawidłowo i aktualizuje się też ListView
z góry dziękuje za pomoc.