如何自定义Xamarin.Forms应用程序?

时间:2015-06-18 22:02:10

标签: xamarin xamarin.forms

如何自定义xamarin.forms组件的外观? 我希望每个按钮都有相同的图像。或者让所有系统共享具有相同背景图像的相同登录屏幕。 我知道我可以通过为每个平台项目添加一个特定的屏幕来实现这一点。但我希望能够自定义组件本身。示例:无论正在运行哪个平台,所有按钮都将具有相同的背景图像。

我读过这些:

http://developer.xamarin.com/guides/cross-platform/xamarin-forms/custom-renderer/

http://developer.xamarin.com/guides/cross-platform/xamarin-forms/working-with/styles/

http://code.tutsplus.com/tutorials/getting-started-with-xamarinforms-customizing-user-interface--cms-22144

最有希望的似乎是最后一个。自定义渲染器是实现此目的的唯一方法吗?我不能只在共享项目中添加图像,它可以自动适用于所有平台吗?

感谢。

2 个答案:

答案 0 :(得分:2)

要做到这一点,你可以在App类中指定一个样式,(你需要将app类更改为由2个部分组成:App.xaml& App.xaml.cs,然后创建一个用于保存自定义的ResourceDictionary。

<Style TargetType="Button">
    <Setter Property="Image" Value="MyImage.png"/>
</Style>

希望有所帮助。

干杯, 特里斯坦

答案 1 :(得分:2)

它不是很清楚,你想要达到的完全 ......但我试着回答你。

如果您使用共享项目(基于模板&#34; 空白应用(Xamarin.Forms共享)&#34;),您可以使用平台所有中的相同页面/页面定义。
你可以添加 - 例如共享文件夹中的登录表单,然后从代码中调用它(例如,从共享文件夹中的另一个页面) 如果您想创建您自己的控件,您可以创建&#34;用户控件&#34;并在任何你想要的地方使用它(我向每个用户推荐) 您可以通过创建自己的类(例如,使用条目和标签)来实现此操作,实现事件,然后将其实例化到您要使用它的位置。 E.G。

var OeFirma = new EntryErfassung(cDefaultText: "Firma", iMaximalLaenge: 45);

其中OeFirma是页面上对象实例的名称(访问它),EntryErfassung是我自己的类(包含描述标签,条目和错误标签等),cDefaultText是参数,超过并将默认文本设置为Entry并且iMaximalaenge是另一个被超越的参数,其中我的班级然后注意,此条目不接受超过45个字符。)

我有例如创建了一个带有描述标签,删除按钮,条目和错误标签广告的类,在所有数据输入表单上使用它。
如果您想要更改特定平台的特定控件的外观,您可以创建一个&#34;自定义渲染&#34; (我已经这样做,例如将字体大小更改为特定于iOS的编辑,因为无法在XF-Entry控件中设置font-sinze)。

希望这能回答你的问题...