绑定、数据上下文、集合视图源

本文关键字:视图 集合 上下文 数据 绑定 | 更新日期: 2023-09-27 18:36:16

>我有一个自定义对象,它有一些属性和一个ObservableCollection

我遇到的问题是让他们都打得很好。似乎我想要一个CollectionViewSource来过滤,但我无法弄清楚它是如何应用的,以便我可以在代码端运行过滤器。

我还没有找到一个像这样的绑定的好例子,它考虑了多个事情(主对象上的程序,带有过滤器的集合)

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; }
}

使用它,我主要这样做.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>

我真的只想针对 Classes 属性创建 CVS,这样我就可以将 CSV 分配给DataGrid,并仅使用Binding Room而不是Binding Classes.Room来处理自定义列绑定

至少我怀疑,基本上问题是我找不到任何谈论将 OC 与其他数据混合的示例/教程。

绑定、数据上下文、集合视图源

简而言之,CollectionViewSource允许您对源进行"虚拟视图",该视图允许您在"视图"中对数据进行分组或排序,而源仍然保持不变。

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

虽然由于您没有发布太多代码并且没有指定任何确切的问题,我很乐意像您提出问题一样广泛地回答您。

以下链接将帮助您了解 wpf 中的分组、排序和筛选:

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

http://wpftutorial.net/DataViews.html

看看它们,自己尝试一下。一旦你被困在某个地方,谷歌似乎没有帮助你,请随时在这里发布一个带有代码示例的问题。