【问题标题】:WPF Bind DataTable to repeated user controlsWPF 将 DataTable 绑定到重复的用户控件
【发布时间】:2009-02-13 09:43:34
【问题描述】:

我正在自学 WPF,但遇到了一个小问题,我找不到答案。

我的测试应用允许将图像文件放入 StackPanel。一旦图像被删除,一个新的用户控件被添加到堆栈中,并显示一些关于文件的元数据。一切正常,我可以遍历子控件来检索值。

我希望能够做的是允许用户将此数据保存到文件中,以便他们可以暂停处理数据。我这样做的明显方法是将数据存储在 DataTable 中并将其序列化/反序列化为 xml。但是,我不知道如何从 DataTable 或 DataSet 对象驱动用户控件的集合——事实上,我什至不知道这是否是在 WPF 应用程序中进行此操作的正确方法。我非常愿意在这里承认我的无知,如果有更好的建议,我会提出更好的建议。

应用逻辑总结。

1) 文件被(从 Win 资源管理器)拖放到 StackPanel
2) 文件触发创建新的用户控件,该控件被添加到 StackPanel
3) 在用户控件中填充数据
4) 处理数据涉及遍历控制集合。

我想要什么

1) 文件被(从 Win 资源管理器)拖放到 StackPanel
2) 文件数据被插入到某个持久化对象(数据表?)
3) 更新的数据表驱动用户控件的生成被添加到显示的集合中。
4) 保存/加载功能保留数据以供以后重复使用。

提前致谢

【问题讨论】:

    标签: wpf data-binding user-controls


    【解决方案1】:

    您在第二种方法上走在正确的轨道上,您需要查看的是 ItemsControl - 这是一个可以添加项目的东西。它是 ListBox 等的基础,你可以template it to work as you require。然后是 DataTemplate,它处理在将项目添加到底层数据结构时显示哪些控件以及与这些控件的数据绑定。网上有不少例子,试试Dr WPF

    为了使一切正常工作,底层数据结构必须支持更改通知。由于一切都是自动发生的,一旦设置了 Xaml,您就会发现自己处于一个奇怪的境地。您已将数据添加到数据结构中,这反过来又导致控件和数据出现在您的 ItemsControl 中。您如何链接数据项及其可视控件。答案是使用一些内置的静态方法 ItemFromContainer 将图形链接到您的底层数据项,这对处理点击事件很有用,而 ContainerFromItem 则相反。

    【讨论】:

      猜你喜欢
      • 2019-03-01
      • 2010-10-10
      • 2010-10-30
      • 2011-10-02
      • 2013-07-28
      • 2013-08-29
      • 1970-01-01
      • 1970-01-01
      • 2018-02-07
      相关资源
      最近更新 更多