与集合对象的 WPF 数据绑定

2024-04-15

我有一个简单的类,定义如下:

public class Person
{
    int _id;
    string _name;

    public Person()
    { }

    public int ID
    {
        get { return _id; }
        set { _id = value; }
    }

    public string Name
    {
        get { return _name; }
        set { _name = value; }
    }
}

它存储在数据库中,通过更多代码,我将其放入 ObservableCollection 对象中,以便稍后尝试在 WPF 中进行数据绑定:

 public class People : ObservableCollection<Person>
{
    public People() : base() { }

    public void Add(List<Person> pListOfPeople)
    {
        foreach (Person p in pListOfPeople) this.Add(p);
    }
}

在 XAML 中,我自己有一个 ListView,当它从数据库更新时,我想为“People”对象中的每个项目填充一个 ListViewItem(由文本块组成)。我还希望该文本块绑定到 Person 对象的“Name”属性。

我一开始以为我可以这样做:

lstPeople.DataContext = objPeople;

其中 lstPeople 是我的 XAML 中的 ListView 控件,但这当然没有任何作用。我在网上找到了大量示例,其中人们通过 XAML 创建对象,然后通过 XAML 绑定到该对象;但不是我们绑定到实例化对象并相应地重新绘制的地方。

有人可以给我一些建议吗:

A) 如何将 ListView 控件绑定到我实例化的“People”集合对象?

B) 如何将模板应用到 ListView 以针对集合中的对象设置其格式?

即使链接到一个像样的示例(请不要对 XAML 中声明的对象进行操作)也将受到赞赏。


你们是如此接近。

lstPeople.ItemsSource = objPeople; // :)

您唯一需要的另一件事是如何为集合中的每个项目应用视图。没问题。我不会使用 ListView...我只会使用 ItemsControl 因为它更简单一些。

<ItemsControl x:Name="lstPeople">
    <ItemsControl.ItemTemplate>
         <DataTemplate>
              <TextBlock Text="{Binding Name}" />
         </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

差不多就这样了。 Listview 的策略是相同的,但您需要提供更多的 XAML 来提供列标题和内容。我不能 100% 确定你现在需要这个,所以我把它省略了。

Edit:这是“AddRange”的扩展方法,它将通过子类化 ObservableCollection 来完成您想要做的事情。有点容易......特别是如果你最终有很多集合类型(你会的)

public static void AddRange<T>(this ObservableCollection<T> collection, IEnumerable<T> items)
{
     foreach(var item in items)
     {
          collection.Add(item);
     }
}

然后你可以这样做:

ObservableCollection<Person> peeps = new ObservableCollection<Person>();
peeps.AddRange(new List<Person>
{ 
     new Person() { Name = "Greg" }, 
     new Person() { Name = "Joe" } 
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

与集合对象的 WPF 数据绑定 的相关文章

  • WPF Prism - 管理应用程序中的模块

    将 Prism 与 WPF 结合使用 我希望允许用户从存储库中选择他们想要使用的模块 每个模块本质上都是一个附加组件 选择要使用的模块只需将其移动到 DLL 的 模块 文件夹中即可加载 但是 在应用程序运行时尝试移动 DLL 时 会引发错误
  • 如何将 Ctrl+,(control 加逗号)指定为 WPF 菜单项的键盘快捷键?

    Question I would like to assign the keyboard shortcut Ctrl control plus comma to the Preferences menu item How do I do t
  • 在 MVC 中重用 WPF ViewModel 是否可行?

    我们有一个用 WPF WCF 编写的富客户端应用程序 并打算在 ASP net 中创建一个配套网站 如果可能 使用 MVC 我被要求弄清楚我们当前的代码库中有多少是可以重用的 由一个单独的团队 而且我对 ASP net 几乎没有经验 我们将
  • 限制文本框中每行的最大字符数

    假设我有以下内容
  • 使用 DrawImage 方法黑屏

    我必须使用绘制位图图像绘图上下文 DrawImage http msdn microsoft com en us library ms606804 28v vs 90 29 aspx method 使用下面的代码一切正常 BitmapIma
  • 错误:此 PlotModel 已被其他 PlotView 控件使用

    我有两个选项卡绑定到一个viewmodel其中包含一个PlotModel of oxyplot并查看通过选择的模型DataTemplate 当单击第一个选项卡时viewmodel已正确绑定 但当切换到标题中定义的上面第二个选项卡时 会抛出异
  • WPF 向我的 GUI 添加时钟

    简单请求 我希望能够在 WPF 应用程序窗口中显示当前时间 有免费的控件吗 只需要显示时间 没有别的 您可以有一个标签或文本块 并将其内容绑定到 System DateTime Now
  • 如何在Python中检查元组是否包含元素?

    我试图找到可用的方法 但找不到 没有contains 我应该使用index 我只想知道该项目是否存在 不需要它的索引 You use in if element in thetuple whatever you want to do
  • C#:如何在虚拟模式下有效过滤(隐藏)ListView 项目?

    C 如何在虚拟模式下有效过滤 隐藏 ListView 项目 我正在寻找一种在虚拟模式下过滤 隐藏 显示 ListView 中的项目的方法 我将我的项目缓存在列表视图项目数组中 如何有效地使其在按下过滤按钮时仅显示特定的列表视图项目 然后在按
  • 是否可以更改 WPF 控件的父级

    是否可以更改 WPF 控件的父控件 这是一个例子 StackPanel堆栈1有Buttonbtn1 在里面 还有一个空的StackPanel堆栈2 我想以编程方式将 btn1 移动到 stack2 谢谢您的帮助 您可以通过以下方式执行此操作
  • 如何在 WPF 中执行操作之前延迟

    我尝试使用下面的代码在导航到下一个窗口之前延迟 2 秒 但线程首先调用 文本块显示一微秒并进入下一页 我听说调度员会这样做 这是我的片段 tbkLabel Text two mins delay Thread Sleep 2000 Page
  • 学习 WPF 会提高我的 ASP.NET 技能吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我已经在 Windows 窗体领域工作了很多年 而且仍然如此 我完全不熟悉 ASP NET 技术 也不熟悉其他 Web 相关技术 我曾合作过 O
  • 以编程方式将 Word 文件另存为图片

    我想将Word文档的第一页另存为图片 使用 C 有什么方法可以做到这一点 您可以将 Word 文档打印到 XPS 文档 在 WPF Net 3 5 应用程序中打开它 并使用 WPF 框架的文档和图像功能将第一个内部固定页面对象转换为位图 如
  • 从 WPF 打印/报告的最佳方法是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • WPF:如何以不同的方向书写文本?

    我需要按照下图指定的方向写入文本 事实上 我在这里看到了一些使用文本块并使用 RenderTransform 旋转控件角度的示例 但这不是我真正需要的 我尝试使用图像来做到这一点 但它不太适合 所以我真的不知道如何解决它 如果您查看旁边的图
  • Window.AllowsTransparent 设置为 true 时 wpf 中的运行时错误

    当我设置时 我在运行时抛出异常AllowsTransparency True 我得到一个例外 说WindowStyle不能设置为None if AllowsTransparency设置为 true 即使我明确地说WindowStyle被设定
  • RenderTargetBitmap 内存泄漏

    我正在尝试使用 RenderTargetBitmap 渲染图像 每次我从 RenderTargetBitmap 创建一个实例来渲染图像时 内存都会增加 完成后内存永远不会释放 这是代码 RenderTargetBitmap rtb new
  • 将按钮控件嵌入到现有 Direct3D 应用程序中

    我想将自己的内容覆盖在 Direct3D v9 游戏 由第三方制作 之上 叠加互动按钮 具体来说 我想覆盖一个可点击的按钮控件 就像 Steam 所做的那样 尽管我正在尝试一个更简单的界面 理想情况下 我能够覆盖 WPF 按钮或 Windo
  • WPF 应用程序在每个系统规模上具有相同的大小(与规模无关)

    有没有办法让 WPF 应用程序在每个系统规模上获得相同的大小 当我改变时更改文本 应用程序和其他项目的大小在windows系统设置中125 推荐 to 100 在全高清屏幕中 我的 WPF 应用程序变得太小 为了实现独立的系统缩放应用程序
  • 如何绑定到 IronPython 中的列表框?

    我刚刚开始在 WPF 中使用 IronPython 但我不太明白绑定应该如何完成 通常在 WPF 中我会这样做

随机推荐