当单击 listviewitem 时,我会在列表视图中显示模型列表。我打开一个绑定到 listviewitem 数据模型的对话框,并允许用户编辑各种属性。
我正在尝试弄清楚如何处理“确定”和“取消”按钮。一方面,如果我将对话框直接绑定到列表视图项模型,则似乎没有办法取消该操作。
另一方面,如果我为对话框提供模型的克隆(由于使我的模型可克隆的开销)而不是真正的模型,则取消很容易处理,但将新数据放入现有模型中却很痛苦因为那时我必须仔细检查并将所有属性从克隆复制回原始模型。
我怀疑这有一个很好的设计模式。有任何想法吗?
您可以将所有绑定更改为“显式”,因为它们不会自动将值推回到源,然后在单击“确定”按钮时强制它们更新。
例如,让我们使用显式更新模式将 TextBox 绑定到模型的“Foo”属性:
<TextBox x:Name="fooEdit" Text="{Binding Foo,UpdateSourceTrigger=Explicit}" />
然后,当单击“确定”按钮时:
BindingExpression be = fooEdit.GetBindingExpression(TextBox.TextProperty);
be.UpdateSource();
如果您有很多控件,这可能有点麻烦,但它使您可以完全控制何时从其绑定控件更新基础属性。
Update
我应该补充一点,你还应该看看可编辑对象界面,它是为您描述的场景而设计的。如果您可以在您的模型或中间 ViewModel 上实现它,那么生活就会变得更加轻松。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)