用户控件是否需要实现INotifyPropertyChanged?

时间:2014-10-10 03:13:25

标签: asp.net webforms user-controls inotifypropertychanged

在ASP.NET Web窗体中,用户控件是否需要实现INotifyPropertyChanged以允许网页在模型绑定上下文中正确使用它们,如下所示:

<uc1:MyControl runat="server" SomeProperty=<%# Item.Age%> ID="MC1" />

2 个答案:

答案 0 :(得分:2)

我肯定会说它们不是“需要”,但ComponentModel的INotifyPropertyChanged非常通用,可以在ASP.NET Web Form的用户控件上使用。我认为使用INotifyPropertyChanged保证使用INotifyPropertyChanged的最佳情况是,如果您需要编写一堆事件来让您的用户控制客户端知道多个属性发生变化。 INotifyPropertyChanged事件/模式比为每个需要通知客户端的属性更改事件要简单得多。

所有这些,我主要看到DataContexts中使用的{{1}}用于ORM和WPF中的绑定。这些似乎是这个模型更受欢迎的用法。我不认为我曾经见过ASP.NET Web窗体控件使用INotifyPropertyChanged,但这并不是说它不会有用。

我一般发现ASP.NET Web窗体用户控件所需的主要事件更多地来自用户的反馈,例如“用户单击此按钮”或“用户进行此选择”。由于Web的性质和客户端必须“回发”他们的数据,ASP.NET Web窗体用户控件的大多数客户端将在控件引发“用户做某事”时检查它所需的控件的每个属性“事件。

答案 1 :(得分:0)

不,他们没有,他们需要从Control或WebControl继承,尽管据我所知。自从我写了任何控件以来已经有一段时间了。

修改

结帐 http://msdn.microsoft.com/en-us/library/vstudio/zt27tfhy(v=vs.100).aspx

具体而言 http://msdn.microsoft.com/en-us/library/vstudio/4s70936s(v=vs.100).aspx

如果在Visual Studio中使用对象浏览器,则可以看到现有控件的实现,例如TextBox实现:

IEditableTextControl
IPostBackDataHandler
ITextControl
WebControl

和WebControl实现

Control
IAttributeAccessor

等等......任何Interfaces或BaseTypes中都没有包含INotifyPropertyChanged。 如果您来自Windows Metro / Phone开发人员背景,那么我可以看到为什么你会这么想,因为它在那里被大量使用。

希望这有帮助