0

私はWPFDataGridを持っています:

<DataGrid SelectedIndex="{Binding SelectedXIndex,Mode=TwoWay}" DataContext="{Binding MyViewModel}" ItemsSource="{Binding XList}" AutoGenerateColumns="False">
...
</DataGrid>

これItemSourceは、ViewModelにあるリストにバインドされます。

 private ObservableCollection<X> _xList= new ObservableCollection<X>();
    public ObservableCollection<X> XList
    {
        get
        {
            return _xList;
        }
        set
        {
            _xList= value;
            NotifyPropertyChanged("XList");
        }
    }

クラスXには、Name(string)とValue(int)が含まれています。

ボタンを押すと、詳細(名前と値)がいっぱいのリストアイテムがファイルに保存されます。

保存すると、DataGridへのバインドがItemSourceで機能しなくなります。XListとは異なるいくつかのアイテムがあります。

保存機能は次のとおりです。

    public void SaveToFile(string path)
    {
        XList= FilterCommands();//Return the full value commands
        List<X> serlist = new List<X>();

        for (int i = 0; i < XList.Count; ++i)
        {
            if (!string.IsNullOrEmpty(XList[i].Name))
            {
                serlist.Add(XList[i]);
            }
        }
        XmlSerializer serializer = new XmlSerializer(typeof(List<X>));
        TextWriter textWriter = new StreamWriter(path);
        serializer.Serialize(textWriter, serlist);
        textWriter.Close();
    }

なぜこれが起こるのか理解できません。

(問題はおそらくダイアログ保存を開くことであるように思われますが、それを解決するにはどうすればよいですか?)

4

1 に答える 1

1

FilterCommandsメソッドがObservableCollectionの内容を置き換えているようです。

その方法は正確に何をしますか?コレクションを変えていますか?

于 2013-02-17T20:16:52.337 に答える