2013-10-21 100 views
0

我有一个自定义对象,有几个属性和ObservableCollection绑定,datacontext,collectionviewsource

我遇到的问题是让他们很好地玩。看来我想要一个CollectionViewSource来过滤,但我无法弄清楚如何适用,以便我可以在代码端运行过滤器。

我还没有能够找到像这样发生在使用,我这样做是为了考虑多个事情(主要对象proeprties,带有过滤器的集合)

class Student 
{ 
    public string Name { get; set; } 
    public DateTime DOB { get; set; } 
    public ObservableCollection<ClassRoom> Classes { get; set; } 

    public Student() 
    { 
     this.Classes = new ObservableCollection<ClassRoom>(); 
    } 
} 

class ClassRoom 
{ 
    public string Name { get; set; } 
    public int Room { get; set; } 
} 

结合的好例子在main.cs

var student = new Student { Name = "Justin", DOB = new DateTime(1983, 6, 15) }; 
student.Classes.Add(new ClassRoom { Name = "math", Room = 102}); 
student.Classes.Add(new ClassRoom { Name = "english", Room = 119 }); 
this.DataContext = student; 

,所以我就可以做到这一点在XAML

<TextBlock Grid.Row="0" Grid.Column="0"> 
     <Run Text="Name: "/> 
     <Run Text="{Binding Name}"/> 
    </TextBlock> 
    <TextBlock Grid.Row="0" Grid.Column="1"> 
     <Run Text="DOB: "/> 
     <Run Text="{Binding Name}"/> 
    </TextBlock> 
    <DataGrid Grid.Row="1" Grid.ColumnSpan="2" Grid.Column="0" 
     ItemsSource="{Binding Classes}" AutoGenerateColumns="True"></DataGrid> 

I R被真正只是想创建对类属性的CVS,所以这样我可以分配CSV到DataGrid和处理自定义列绑定只Binding Room而不是Binding Classes.Room

至少我猜想,基本的问题是我不能找到任何有关将OC与其他数据混合的示例/教程。

回答

0

为了简化故事,CollectionViewSource允许您在源代码中拥有一个“虚拟视图”,允许您在源代码保持不变的情况下对“视图”中的数据进行分组或排序。

知道如何处理这个问题的wpf中的控件不使用源代码,而是绑定到视图,因此当您在CollectionViewSource对象中进行排序时,控件会跟随您并按照自己想要的方式更改其显示的内容。

虽然由于您没有发布大量代码,并没有指定任何确切的问题,我会很乐意回答您的问题,就像您问您的问题一样。

这里有链接,将帮助您了解分组,排序,在WPF过滤:

http://msdn.microsoft.com/en-us/library/ff407126.aspx

http://wpftutorial.net/DataViews.html

检查出来,自己尝试一下。一旦你陷入某个地方,谷歌似乎没有帮助你,任何进一步随意在这里用代码示例发布一个问题。

+0

谢谢,这些链接都说明我的问题是什么。他们都假设所有im发送都是收集本身。我会用一些代码更新这个问题 – jrich523