ListBox
次のチュートリアルにデータをバインドしました(少なくとも私は行ったと思います) 。バインドしたいクラス要素にはデータが含まれていますが、ListBox
いくつかのイベントの後に何も表示されません。次の部分的な XAML があります。
<ListBox x:Name="jukeBoxListBox" Height="227" VerticalAlignment="Top" ItemsSource="{Binding FilePathList}"/>
私が持っているWPFフォームcsファイルで。FolderItems
クラスまたはその属性に設定する必要がありfilePathList
ますか? また、ObservableCollection
代わりに使用する必要がありlist
ますか?
InitializeComponent();
FolderItems folderItems = new FolderItems();
this.DataContext = folderItems.FilePathList;
私のデータクラス:
class FolderItems : INotifyPropertyChanged
{
#region INotifyPropertyChanged implementation
public event PropertyChangedEventHandler PropertyChanged;
protected void Notify(string propertyName)
{
if (this.PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
#endregion INotifyPropertyChanged implementation
private ObservableCollection<String> _pathList = new ObservableCollection<string>();
public ObservableCollection<String> FilePathList
{
get { return _pathList; }
set
{
if (value != _pathList)
{
_pathList = value;
Notify("FilePathList");
}
}
}
}
クリックイベントのList
要素を変更することに言及する必要があると思います。Button
たぶん、以下は問題の一部です。
//in the event fItems is an instance of FolderItems
var files = new ObservableCollection<string>();
ProcessFiles(of.SelectedPath, files);
fItems.FilePathList = files;
//...
private void ProcessFiles(string path, ICollection<string> files)
{
foreach (var file in Directory.GetFiles(path).Where(name => name.EndsWith(".mp3", StringComparison.OrdinalIgnoreCase)))
files.Add(file);
foreach (var directory in Directory.GetDirectories(path))
ProcessFiles(directory, files);
}
私は Javaland 出身で、C# は初めてです。私の言葉を許してください。