wpf - 将 View 模型与模型相结合

标签 wpf mvvm

好的,还有一点需要思考。

MVVM 指出 Model 与 ViewModel 无关。因此,ViewModel 公开了要绑定(bind)的 View 的属性。

Microsoft 代码分析规则告诉我向模型中的公共(public)变量添加一个属性。

warning : CA1051 : Microsoft.Design : Because field 'Employee.name' is visible outside of its declaring type, change its accessibility to private and add a property, with the same accessibility as the field has currently, to provide access to it.

现在它有 2 个重复的属性,我宁愿把它干掉,所以我在考虑合并 ViewModel 和 View。这里还有一件事,Model 是一个 POCO,并且 Will 没有 INotifyPropertyChanged,所以让 VM 知道 Model 值的变化是另一个问题。我使用了很多基于 IList 的绑定(bind)

是否有我忽略的 future 问题?

编辑:我忘了说,我看了看 how to correctly define Model to ViewModel relation? ,我们软件中的另一件事是我们有一个单独的实体来填充 IList,它是一个服务/实用程序集。 EmployeeViewModel 位于单独的 VIEW 程序集中。所以我无法返回 ILIst。

最佳答案

不要这样做。我知道这听起来像很多你不需要的额外东西,但随着你的应用程序变得越来越复杂,它会得到返回。我发现绑定(bind)一个 ViewModel 是绝对必要的,它支持属性通知,并让我以 View 可以轻松使用的方式呈现数据,而无需绑定(bind)到模型中的表示 - ViewModel 根据需要在两者之间转换.

如果您没有这些层次,将来更改事物,尤其是当您通过一定程度的复杂性时,将变得非常困难。

现在,您是否听取 Microsoft 关于在您的模型上使用公共(public)属性而不是公共(public)字段的建议取决于您,但如果您以后需要将一些逻辑放入 getter 和 setter 中,这是一个好习惯。一开始,自动属性可以很好地替代简单的公共(public)字段,让您不必在实际需要一个支持字段之前声明一个支持字段。

关于wpf - 将 View 模型与模型相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15493823/

相关文章:

wpf - 如何将 View 中控件的 UI 调度程序传递给 ViewModel

silverlight-4.0 - Sl 4, MVVM : Using Inlines in a TextBlock, 如何绑定(bind)到ViewModel?

wpf - 如何在 XAML 中使元素引用 StaticResource Storyboard(而不是 Storyboard 引用元素)

xaml - MVVM - 摘要/详细信息

c# - WPF&MVVM : access to Controls from RelayCommand()

c# - Unity-Container 在什么时间点在 WPF 应用程序中处理它的对象?

c# - ScrollIntoView - 项目不应从 View 中消失

.net - 在初始化中遇到 XAML 错误时 Visual Studio 软崩溃

wpf - 具有自动高度的网格行中的列表框。滚动条不工作

c# - 如何区分触摸屏和普通触摸屏?