2009-02-19 30 views
4

我在学习WPF/XAML/Silverlight几乎所有的XAML/C#示例的同时,都遇到了XAML中的“Click”事件,而在窗口或页面构造函数中却很少有人感到有点惊讶。是“非侵入性代码隐藏”是好还是坏的做法?

所有的重点都这些天的“非侵入性的JavaScript”,我倒觉得更多的开发者其实是可以构建自己的XAML /后台代码是这样的:

XAML:

<Grid> 
    <Button x:Name="btnEdit"/> 
</Grid> 
背后

代码:

public Window1() 
{ 
    InitializeComponent(); 

    btnEdit.Content = "Edit"; 
    btnEdit.Click += new RoutedEventHandler(btnEdit_Click); 
} 

private void btnEdit_Click(object sender, RoutedEventArgs e) 
{ 
    btnEdit.Content = "This button was clicked."; 
} 

为什么这有什么想法会是一种好的或不好的做法?

回答

6

大多数较小的WPF示例只给出一个印象什么是可能没有关注设计问题或良好的风格。

在真实世界的应用程序中,XAML只能用于声明性编程。例如,将命令绑定到按钮或声明数据绑定。 Karl Shifflett提供了一些关于MVVM模式的优秀文章,它非常好地分离了WPF/Silverlight应用程序的关注点。

背后的代码在我看来只适用于小型应用程序。它倾向于混合查看,控制和数据。

1

如果我没有记错的话,我认为有一个部分类实现了上面的Visual Studio的代码生成的Init代码。我不能说WPF,但它在ASP.Net 2.0中这样做,所以我假设它在这里也是这样。我永远花了我的时间去习惯这个。

我同意。我讨厌在标记中定义事件。

0

我同意你的关注。

经过多次辩论,我们正在遵循类似模式的非侵入式超精简XAML和绑定命令和代码隐藏数据。

如果您在XAML中添加事件,则会有一个上下文菜单导航到事件代码。如果您在XAML中绑定命令,则不存在等价物。您可以从XAML中的命令声明导航,但不能将其分配给控件上的Command属性。

-2

MVVM是不好的做法。 你认为你分开数据和视图。什么?使用XAML绑定,绑定命令,将其翻译为方法并实现INotifyPropertyChanged的总机制是什么?对于UTests(我做了 - 我测试了他 - 他)?正确的软件只有在用户的测试中才需要......这是你的代码以这种方式分开,你有时不知道在哪里。

对于你使用INotify?对于微软所有的WPF控件和实体在WPF中的整体写法,从FrameworkElement继承了魔术DependencyProperties?

多重绑定是一个单词的硬资源技术(MVVM的作者)。

我写了高复杂度的3D CAE系统,没有任何少于一年的模式... 与典型的应用程序与类和代码隐藏的组织。 https://skydrive.live.com/?cid=ea6ad1087e3103f0&sc=photos&id=EA6AD1087E3103F0!103&sff=1#cid=EA6AD1087E3103F0&id=EA6AD1087E3103F0!118&sc=photos

所有MVVM样品是关于公司的顾客... 我提出把名字MVVMCC模式(客户在公司)

相关问题