以下のプロパティを使用してリストボックスにバインドしています。リストボックスはファイルを表示し、Save メソッドを実行して SaveDialogBox を開くことができます。
私が抱えている問題は、リストボックスからクリックした選択項目ファイルではなく、コレクション内のすべてのファイルに対してダイアログが表示されることです。以下はコードですが、何か不足していますか?
public ObservableCollection<Files> FilesProperty
{
get
{
return mFilesProperty;
}
}
public Files FilesSelectedItem
{
get
{
return mFilesSelectedItem;
}
set
{
mFilesSelectedItem = value;
OnPropertyChanged("FilesSelectedItem");
}
}
セーブを実行するメソッドです。
private void Save(object parameter)
{
SaveFileDialog dlg = new SaveFileDialog();
{
dlg.AddExtension = true;
dlg.DefaultExt = "xlsx";
dlg.Filter = "New Excel(*.xlsx)|*.*";
foreach (var files in FilesProperty)
{
if (dlg.ShowDialog() ?? false)
{
File.WriteAllBytes(dlg.FileName, files.Data);
}
}
}
}
リストボックスの基本コードは次のとおりです。xaml のコードは他にもありますが、長すぎます。
<ListBox Grid.Row="2"
ItemsSource="{Binding FilesProperty}"
SelectedItem="{Binding FilesSelectedItem, Mode=TwoWay}"
BorderThickness="1"/>