0

我的文档

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 = listbox1.??? (??? = Items,或 ItemsSources,或其他东西,...我可以使用 Convert 吗?)<------------ 我没有任何想法!帮我 !

4

3 回答 3

0

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

MyFind myFind = new MyFind();

var myDocs = simpleListBox.ItemsSource as List<MyDoc>;
myDocs.ForEach(d => myFind.List.Add(d));
于 2011-10-22T08:48:14.830 回答
0

我认为您正在寻找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 将它转换为正确的类型。

于 2011-10-22T08:52:50.497 回答
0

你为什么要这样做,简直超出了我的想象!如果您将 ObservableCollection 与 Binding 一起使用并从列表框中添加 remove T (items),则可观察集合将得到更新。与此相符的内容:

public class MyViewModel
{
    public ObservableCollection<MyData> List { get; set; }
}

public class MyView : UserControl
{
    public MyView()
    {
        DataContext = new MyViewModel();
    }
}

<ListBox ItemsSource="{Binding List}" />
于 2011-10-22T08:58:29.173 回答