Xamarin Monodroid:WP7 => Android和自定义控制?

我正在使用Xamarin Monodroid将我的一些Windows Phone应用程序移植到Android。

我对Xamarin的东西很新,只是买了一张牌照。

到目前为止,在AXML中重新创建XAML UI非常好,但我遇到了自定义控件的问题。

这就是我所说的自定义控件:

在.NET中,我通过创建inheritance自’UserControl’类的类创建了一堆控件,我创建了逻辑并设置了内容。 然后我用’new my_control()’等创建新实例……

我的一些控件不是以这种方式创建的,而是通过定义XAML来创建UserControl,其中没有特定的逻辑,但是当我需要组合2个或更多控件时(例如,带有文本的彩色正方形,所以Rectangle + TextBlock)我再次需要做’new my_control()’并将其添加到XAML UI(Grid,ListBox,StackPanel等)中的某个位置。

我怎么能用Monodroid实现类似的东西?

提前致谢!

您也可以在Mono for Android中执行“自定义控件” – 一旦您编写了它们,就可以将它们包含在您的axml文件中。

我担心我手边没有任何简单的例子,但是有一个复杂的例子:

https://github.com/slodge/MvvmCross/blob/master/Sample%20-%20CirriousConference/Cirrious.Conference.UI.Droid/Resources/Layout/ChildPage_Twitter.axml

如果在MyNamespace声明一个类MyControl并从Android Viewinheritance该控件,然后您可以使用如下构造函数设置自定义控件 – 包括从XML中提取属性 –

 public MyControl(Context context, IAttributeSet attrs) { /* ... */ } 

并使用XML,如:

  

其中一个例子可能是来自https://github.com/Cheesebaron/MonoDroid.Horizo​​ntalPager的控件 – 可以使用xml中的xml来使用

   

您可以通过inheritanceView类来创建自己的自定义视图。 这允许你做任何事情。 然后,您可以在AXML中引用它:

  

只需确保AXML中的命名空间名称全是小写,否则它将不会被提取。

但是如果您只需要一个非常简单的AXML布局,那么您可以创建一个新的AXML文件并使用include标签将其放入其中。

有一些关于Android的布局技巧的一般信息,这些信息适用于Android的Mono: https : //developer.android.com/resources/articles/layout-tricks-merge.html

有什么理由不进入构造函数? 这是我的构造函数:

 protected CropImageView(IntPtr javaReference, JniHandleOwnership transfer) : base(javaReference, transfer) { } 

当我给crop_image_view xml充气时,Init方法会导致循环依赖

我试过公开,私有但没有运气……这是我的代码: https : //github.com/slown1/Xamarin.CircleImageCropper