初学完WPF基础,求大虾给点儿开发建议。

mm_love_gg 2017-01-07 04:25:38
因为觉得Winform的界面不太好看,想要从Winform转型WPF。
然而看完《深入浅出WPF》后,发现WPF的开发是采用的“数据驱动”的全新开发观念。
学完基础后,对这些理念,比如数据绑定,依赖属性,依赖对象,路由事件,命令等新的概念和使用有了初步认知,现在想自己着手开发一个小程序来实践一下。
然而在设计时却犯难,不知道具体在何时应该采用怎么样的设计。

简单的描述一下我想要做的这样一个小项目:
从数据库中读取某个表(例如:Student表)中读取数据记录,存放在一个全局的列表结构对象gList中,这个gList对象可能被多个窗体访问,窗体1只能读取出这些数据(并且可以根据指定的条件筛选数据),假设展示在一个GridView控件上,窗体2不光可以读取这些数据,还可以对这些数据进行增、删、改,并且这些动作要写入数据库中,并且全局的这个gList也要能同步更新,并且当窗体2做出了增、删、改的动作导致gList发生变化时,窗体1要能接收到这些变化,并能刷新自己的GridView。

请问要实现以上内容,我该怎么样设计才好:
1.例如全局这个gList,是使用List,还是ObservableCollection之类的。
2.我应该怎样设计Student类作为model,才能让它很好的适应以上我想实现的效果。
3.听说WPF有个MVVM模式,不知道如何能体现在我这样的一个小程序里呢,还是说对于小程序来说这样有点小题大做了?

希望有WPF开发经验的老鸟指教,感谢!
...全文
431 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
exception92 2017-01-11
  • 打赏
  • 举报
回复
exception92 2017-01-11
  • 打赏
  • 举报
回复
引用 6 楼 mm_love_gg 的回复:
[quote=引用 5 楼 duanzi_peng 的回复:] [quote=引用 4 楼 mm_love_gg 的回复:] [quote=引用 3 楼 duanzi_peng 的回复:] 并且全局的这个gList也要能同步更新,并且当窗体2做出了增、删、改的动作导致gList发生变化时,窗体1要能接收到这些变化,并能刷新自己的GridView。 -》首选 ObservableCollection 动态数据集合。 完全可以使用MVVM模式,窗口1,2 绑定各自的DataContext为一个ViewModel类(想必已经了解了DataContext与属性通知概念),把集合存到到这个ViewModel类中。窗口1 绑定这个集合,完全可以在窗口2中 操作 来刷新这个集合。在完全 没有接触的情况下,就先不要考虑什么大题小做了,先学会,在思考应用场景。
了解了,顺便问一下大佬,现在不用MVVMLight,在MVVM模式下,可以实现把事件的EventArgs绑定到CommandParameter从而传递给VIiewModel解析吗?[/quote] 可以实现把事件的EventArgs绑定到CommandParameter从而传递给VIiewModel解析吗 -》 这句话中的EventArgs不准确,commandParameter 可以binding到对象,但是不支持EventArgs类吧。[/quote] 我的意思其实是,如果类似传统的Winform开发,那个事件的处理函数不都长成类似XXX_Click(object sender, EventArgs arg)这样吗,我通过在XAML内部引入interactivity的 i:EventTrigger来相当于把控件的事件触发都绑定了Command,这个倒是可以通过绑定把控件自身的引用作为CommandParameter传递给ViewModel,但是我想把之前传统触发事件时的那个EventArgs作为CommandParameter。。。网上查了下说MVVMLight可以实现,但是那个又要引入第三方库,感觉比较麻烦。[/quote] 都是为了承载参数而已,commandParameter 可以绑定任何类型,字段,数组,对象等等。 那个都一样。MVVMLight 我只用过一次就不使用了。 在传统的MVVM框架几乎都可以满足需求和常用的功能。所以看自己的喜好吧
mm_love_gg 2017-01-11
  • 打赏
  • 举报
回复
引用 5 楼 duanzi_peng 的回复:
[quote=引用 4 楼 mm_love_gg 的回复:] [quote=引用 3 楼 duanzi_peng 的回复:] 并且全局的这个gList也要能同步更新,并且当窗体2做出了增、删、改的动作导致gList发生变化时,窗体1要能接收到这些变化,并能刷新自己的GridView。 -》首选 ObservableCollection 动态数据集合。 完全可以使用MVVM模式,窗口1,2 绑定各自的DataContext为一个ViewModel类(想必已经了解了DataContext与属性通知概念),把集合存到到这个ViewModel类中。窗口1 绑定这个集合,完全可以在窗口2中 操作 来刷新这个集合。在完全 没有接触的情况下,就先不要考虑什么大题小做了,先学会,在思考应用场景。
了解了,顺便问一下大佬,现在不用MVVMLight,在MVVM模式下,可以实现把事件的EventArgs绑定到CommandParameter从而传递给VIiewModel解析吗?[/quote] 可以实现把事件的EventArgs绑定到CommandParameter从而传递给VIiewModel解析吗 -》 这句话中的EventArgs不准确,commandParameter 可以binding到对象,但是不支持EventArgs类吧。[/quote] 我的意思其实是,如果类似传统的Winform开发,那个事件的处理函数不都长成类似XXX_Click(object sender, EventArgs arg)这样吗,我通过在XAML内部引入interactivity的 i:EventTrigger来相当于把控件的事件触发都绑定了Command,这个倒是可以通过绑定把控件自身的引用作为CommandParameter传递给ViewModel,但是我想把之前传统触发事件时的那个EventArgs作为CommandParameter。。。网上查了下说MVVMLight可以实现,但是那个又要引入第三方库,感觉比较麻烦。
exception92 2017-01-10
  • 打赏
  • 举报
回复
引用 4 楼 mm_love_gg 的回复:
[quote=引用 3 楼 duanzi_peng 的回复:] 并且全局的这个gList也要能同步更新,并且当窗体2做出了增、删、改的动作导致gList发生变化时,窗体1要能接收到这些变化,并能刷新自己的GridView。 -》首选 ObservableCollection 动态数据集合。 完全可以使用MVVM模式,窗口1,2 绑定各自的DataContext为一个ViewModel类(想必已经了解了DataContext与属性通知概念),把集合存到到这个ViewModel类中。窗口1 绑定这个集合,完全可以在窗口2中 操作 来刷新这个集合。在完全 没有接触的情况下,就先不要考虑什么大题小做了,先学会,在思考应用场景。
了解了,顺便问一下大佬,现在不用MVVMLight,在MVVM模式下,可以实现把事件的EventArgs绑定到CommandParameter从而传递给VIiewModel解析吗?[/quote] 可以实现把事件的EventArgs绑定到CommandParameter从而传递给VIiewModel解析吗 -》 这句话中的EventArgs不准确,commandParameter 可以binding到对象,但是不支持EventArgs类吧。
mm_love_gg 2017-01-10
  • 打赏
  • 举报
回复
引用 3 楼 duanzi_peng 的回复:
并且全局的这个gList也要能同步更新,并且当窗体2做出了增、删、改的动作导致gList发生变化时,窗体1要能接收到这些变化,并能刷新自己的GridView。 -》首选 ObservableCollection 动态数据集合。 完全可以使用MVVM模式,窗口1,2 绑定各自的DataContext为一个ViewModel类(想必已经了解了DataContext与属性通知概念),把集合存到到这个ViewModel类中。窗口1 绑定这个集合,完全可以在窗口2中 操作 来刷新这个集合。在完全 没有接触的情况下,就先不要考虑什么大题小做了,先学会,在思考应用场景。
了解了,顺便问一下大佬,现在不用MVVMLight,在MVVM模式下,可以实现把事件的EventArgs绑定到CommandParameter从而传递给VIiewModel解析吗?
exception92 2017-01-09
  • 打赏
  • 举报
回复
并且全局的这个gList也要能同步更新,并且当窗体2做出了增、删、改的动作导致gList发生变化时,窗体1要能接收到这些变化,并能刷新自己的GridView。 -》首选 ObservableCollection 动态数据集合。 完全可以使用MVVM模式,窗口1,2 绑定各自的DataContext为一个ViewModel类(想必已经了解了DataContext与属性通知概念),把集合存到到这个ViewModel类中。窗口1 绑定这个集合,完全可以在窗口2中 操作 来刷新这个集合。在完全 没有接触的情况下,就先不要考虑什么大题小做了,先学会,在思考应用场景。
mm_love_gg 2017-01-08
  • 打赏
  • 举报
回复
引用 1 楼 Forty2 的回复:
跟你参考的书名一样,自己练习也可以“深入浅出”。 '小项目'可以先简单的实现。 然后再尝试用MVVM来做。 MVVM是一种模式,并不是WPF独有的;WPF也不依赖于MVVM。 因此你可以分开来学。 至于具体设计,全局变量一般是没有必要的。
不用全局变量用什么呢,假设窗口1和窗口2同时存在,又同时需要引用这个表中的数据,如果每个窗口都保留一份数据副本,不是浪费内存吗
Forty2 2017-01-08
  • 打赏
  • 举报
回复
跟你参考的书名一样,自己练习也可以“深入浅出”。 '小项目'可以先简单的实现。 然后再尝试用MVVM来做。 MVVM是一种模式,并不是WPF独有的;WPF也不依赖于MVVM。 因此你可以分开来学。 至于具体设计,全局变量一般是没有必要的。

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧