【发布时间】:2010-01-20 22:57:36
【问题描述】:
我刚刚开始使用 WPF,我正在构建一个简单的电影库作为测试项目来帮助我找到自己的脚。
我将我的电影信息存储在 XML 中,例如:
<movie id="1" title="Back To The Future" date="1985" ... />
电影出现在列表中,点击后字段将变为可编辑。我已经通过使用两个数据模板来设置列表项的样式,通过 ListBoxItem.IsSelected 属性上的触发器应用来实现这一点。
但对于绑定和编辑数据,我非常感谢您提供一些建议。我已经尝试了以下每种方法,并取得了不同程度的成功。你认为哪个最有意义?还有什么我可以尝试的吗?
方法 1:使用 XAML 中的 XMLDataProvider 直接绑定到 XML。在这种情况下,ListBox 绑定到 XmlDataProvider,并且各个控件元素通过 XPath 表达式绑定。上手非常简单,但是这种方法在编辑数据时似乎变得棘手。我们需要相当多的 ValueConverter 来确保数据以合理的方式呈现并以适当的格式保存回 XML 文件。
方法 2:创建一个自定义 Movie 类,该类接收 XML 并将所有电影属性公开为控件绑定到的公共属性。这感觉更健壮和灵活,但似乎需要更多的工作来实现。每个属性都需要在代码中显式公开,验证很麻烦。
方法 3:有点像方法 2,但使用电影用户控件而不是 ListBox + 数据模板。我从这个开始并很快放弃了它,因为我看不到方法 2 有任何优势。
我意识到这不是一个直截了当的问题,需要考虑很多因素,但对于各种利弊(或我是否遗漏任何技巧)的任何想法将不胜感激。如果您需要更多信息或代码示例,请告诉我。如果这个问题不恰当或不受欢迎,我们深表歉意。
非常感谢。
【问题讨论】:
标签: c# .net wpf xml data-binding