如何将我的列表框保存到ObservableCollection<>;

本文关键字:ObservableCollection lt gt 保存 我的 列表 | 更新日期: 2023-09-27 18:12:07

MyDoc.cs

public class MyDoc
{
  public string Private {set;get;}
  public string Public  {set;get;}
}

MyFind.cs

public class MyFind
{
 public string Find {set;get;}
 public string News  {set;get;}
 private ObservableCollection<MyDoc> _list;
 public ObservableCollection<MyDoc> List
 {
       get
        {
             if (_list == null)
             {
                  _list = new ObservableCollection<MyDoc>();
             }
             return _list;
        }
       set
        {
              if (_list != value)
              {
                   _list = value;
              }
        }
 }
}

在Page1.xaml.cs 中

MyFind myfind = new MyFind();
myfind.Find = Findtextbox.Text;//string = string
myfind.News = Newstextbox.Text;//string = string
myfind.List = ??? 

ObservableCollection=列表框1。???(??=项目,或项目源,或其他,…我可以使用转换吗?(<---------------我没有任何想法!帮帮我!

如何将我的列表框保存到ObservableCollection<>;

如果将ItemsSource属性设置为类似List的属性,则可以执行以下代码:

MyFind myFind = new MyFind();
var myDocs = simpleListBox.ItemsSource as List<MyDoc>;
myDocs.ForEach(d => myFind.List.Add(d));

我认为您正在寻找ItemsSource属性:

MyFind myfind = new MyFind();
myfind.Find = Findtextbox.Text;
myfind.News = Newstextbox.Text;
myfind.List = new ObservableCollection<MyDoc>(listbox1.ItemsSource.Cast<MyDoc>());

在这里,我创建了一个新的MyDoc对象的ObservableCollection,并将MyDoc项的IEnumerable传递给构造函数。因为listbox1.ItemsSource属性返回一个未类型化的IEnumerable,所以我首先使用LINQ将其强制转换为正确的类型。

我无法理解你为什么要这么做!如果您使用带有Binding的ObservableCollection,并从列表框中添加remove T(项(,则可观察集合将得到更新。与此一致的东西:

public class MyViewModel
{
    public ObservableCollection<MyData> List { get; set; }
}
public class MyView : UserControl
{
    public MyView()
    {
        DataContext = new MyViewModel();
    }
}
<ListBox ItemsSource="{Binding List}" />