是否应该将控制权限限制在WPF中的MainWindow类中?

时间:2013-07-25 12:55:20

标签: .net wpf wpf-controls

在其他编程语言(即Java)中,我之前在一个类中创建了一个Window,然后让不同的类返回选项卡添加到Window中,这样当窗口的某些部分需要更新时,对象没有必须传递给一个主类来更新控件。

但是我是.NET新手,我看到如果我创建一个MainWindow.xaml,控件只能在其类中使用。这是设计,还是有办法访问另一个类中的控件?

设计函数是否更好,以便它们返回更新控件所需的信息,或者在已经存在所需信息的类中访问控件?

2 个答案:

答案 0 :(得分:2)

WPF旨在使用绑定。您为表单提供一组数据(例如客户列表)并将控件(例如,应包含客户列表的组合框)绑定到该表单。

数据本身由表单中的函数操纵,或者最好由控制器(包含分离逻辑的类)操纵。

查找有关WPF中绑定的信息,以及公共UI模式(如MVVM或MVC),您将很快获得图片。

答案 1 :(得分:1)

事实上,你不应该把你的代码放在代码隐藏中是一种不好的做法。

事实上,最流行的WPF编程方式是使用MVVM pattern,MVC的一种变体。

在MVVM模式中,View仅包含XAML或非常有限的代码来执行使用WPF的触发器和动画无法轻松完成的UI操作。

View的数据由ViewModel类通过数据绑定提供。数据绑定由框架本身提供,并且在View或ViewModel不知道另一个的情况下来回传递数据。

只要ViewModel通过标准接口(INotifyPropertyChanged)通知它,ViewModel属性的更改就会被框架传递给View。

与其他MVC模式的主要区别在于ViewModel是基础业务或数据模型之上的抽象,专门用于使视图的工作更容易。

没有MVVM的标准实现。最受欢迎的两个框架是MVVM LightCaliburn.Micro(我的偏好)。 MVVM Light更轻巧,而Caliburn.Micro更具见解,但更强大。

作为旁注,MVVM背后的想法已经找到了一些Javascript框架,如Backbone.js和Knockout.js