我使用以下属性绑定到列表框。列表框显示文件,可以执行Save方法打开SaveDialogBox。
我遇到的问题是对话框中的每个文件都出现了对话框,而不是我从列表框中单击的selecteditem文件。下面是代码,我错过了什么?
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);
}
}
}
}
以下是listbox的基本代码,xaml有更多代码,但它太长了。
<ListBox Grid.Row="2"
ItemsSource="{Binding FilesProperty}"
SelectedItem="{Binding FilesSelectedItem, Mode=TwoWay}"
BorderThickness="1"/>
答案 0 :(得分:1)
您要保存所选项目吗?
所以你要保存存储在FilesSelectedItem
propetry中的数据。此外,您应该检查它是否为空。
您的错误如下:您试图遍历FilesProperty
集合。
private void Save(object parameter)
{
SaveFileDialog dlg = new SaveFileDialog();
{
dlg.AddExtension = true;
dlg.DefaultExt = "xlsx";
dlg.Filter = "New Excel(*.xlsx)|*.*";
var file = FilesSelectedItem;
if (dlg.ShowDialog() ?? false)
{
File.WriteAllBytes(dlg.FileName, file);
}
}
}