3

生成的 Designer.cs 属性默认是私有的(至少不需要手动调整生成的代码)。这使得对 UITableViewCell 之类的编码感觉与我在 Objective-C 中执行此操作时有很大不同。

UIxxxViewCells 的流行方式,至少据我所知,是让 UIxxxViewDataSource 填充 IBOutlet 属性,并且单元应该只负责与绘制/渲染视图相关的任何事情。

使用 Xamarin.iOS,我们无法从数据源访问这些属性,而是需要提供额外的 setter 方法来填充单元格。这样,单元格负责设置它自己的属性。

这只是做事的“.NET方式”吗?

4

2 回答 2

8

这样我们就不会默认破坏封装。

插座属于它们所在的对象,它应该可以选择是否可以从外部进行修改。它们是属性的事实是 Xamarin.iOS 插座系统的实现细节 - 您应该将它们视为私有字段。

如果您希望公开它们,您可以创建这样做的属性 - 最好是只读的。

于 2013-08-09T19:54:59.510 回答
3

它可能是这样做的,因为当时 MonoDevelop 中的其他 GUI 设计师就是这样工作的(现在仍然如此)。对于 Gtk# 等工具包的用户设计控件使用的本机控件的自动生成绑定也被创建为私有的。

我不确定其他用于 .NET 的 UI 设计器是否工作(我从未使用 Visual Studio 开发使用 Windows.Forms 或 WPF 的 GUI 应用程序)。

随时在https://bugzilla.xamarin.com上提交功能请求以将它们公开 - 我很乐意实施它,我认为公开它们可能更有意义。我没有改变它,主要是因为没有人表示他们希望它是其他方式。

于 2013-08-09T18:06:05.900 回答