如何将我的列表框保存到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。???(??=项目,或项目源,或其他,…我可以使用转换吗?(<---------------我没有任何想法!帮帮我!
如果将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}" />