Dialog保存每个文件,而不是列表框中的选定文件

时间:2013-06-09 18:11:52

标签: c# wpf

我使用以下属性绑定到列表框。列表框显示文件,可以执行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"/>

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);
            }
        }
    }