gpt4 book ai didi

c# - WPF:两个控件绑定(bind)到一个源,如何过滤绑定(bind)?

转载 作者:行者123 更新时间:2023-11-30 17:09:56 25 4
gpt4 key购买 nike

我有一个 WPF Windows 应用程序项目,它有一个带有两个 ListBox 控件的窗口,问题是如何将一个源绑定(bind)到这两个控件?来源就像:

class student
{
public string name{get;set;}
public int age{get;set;}
}

ObservableCollection<student> m_myGroup;

我想:如果年龄 > 25,则 ListBox1 绑定(bind)到 m_myGroup 如果年龄 <=25,则 ListBox2 绑定(bind)到 m_myGroup显然,两个 ListBox 都有一个

TextBlock Text={binding Path=name}

而且我不想使用 DataTrigger 隐藏或显示项目可见性属性,我尝试使用 ICollectionView 来过滤源,但它会影响其他 ListBox!有谁知道如何为每个 ListBox 制作两个过滤器,并且它们只绑定(bind)到一个来源?

最佳答案

为 m_myGroup 创建两个 ICollectionView,过滤它们并将它们绑定(bind)到 ListBoxes

就此而言,将 ListBox.IsSynchronizedWithCurrentItem 设置为 false,选择时 ListBoxes 之间不会产生任何影响。

参见 this .

编辑:

public class StudentHandler
{
ObservableCollection<student> m_myGroup;

public CollectionViewSource YoungStudentsViewSource { get; private set; }
public CollectionViewSource OldStudentsViewSource { get; private set; }

public StudentHandler
{
YoungStudentsViewSource = new CollectionViewSource {Source = m_myGroup};
OldStudentsViewSource = new CollectionViewSource {Source = m_myGroup};

YoungStudentsViewSource.Filter = (stud) => {return (stud as student).age<=25;};
OldStudentsViewSource .Filter = (stud) => {return (stud as student).age>25;};
}
}

在此之后将 ViewSources 绑定(bind)到 ListBoxes

关于c# - WPF:两个控件绑定(bind)到一个源,如何过滤绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12418326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com