Xamarin.Forms自定义控件是否与WPF /桌面相同?

时间:2019-04-03 14:24:50

标签: c# xaml xamarin.forms custom-controls

很长一段时间以来,我一直在使用C#和WPF构建桌面应用程序。可以肯定地说(这并不意味着我擅长),我知道如何通过使用以下代码来构建自定义控件和所需的样式(节略的):

public class HexadecimalBox : ExtendedTextBox
{
    public static readonly DependencyProperty RedProperty = DependencyProperty.Register("Red", typeof(int), typeof(HexadecimalBox), new PropertyMetadata(0, Value_PropertyChanged));

    public int Red
    {
        get => (int)GetValue(RedProperty);
        set => SetValue(RedProperty, value);
    }

    static HexadecimalBox()
    {
        DefaultStyleKeyProperty.OverrideMetadata(typeof(HexadecimalBox), new FrameworkPropertyMetadata(typeof(HexadecimalBox)));
    }

    //Overrides, methods, events registered inside the OnApplyTemplate, etc.
}

这种样式也被删除(在Themes / Generic.xaml文件中):

<!--HexaDecimalBox Style-->
<Style TargetType="{x:Type n:HexadecimalBox}">
    <Setter Property="MaxLength" Value="9"/>

    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type n:HexadecimalBox}">
                <Border Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" MinWidth="{TemplateBinding MinWidth}"
                        BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"
                        Background="{TemplateBinding Background}" VerticalAlignment="{TemplateBinding VerticalAlignment}"
                        HorizontalAlignment="{TemplateBinding HorizontalAlignment}" SnapsToDevicePixels="True">
                    <ScrollViewer x:Name="PART_ContentHost" Focusable="False" HorizontalScrollBarVisibility="Hidden"
                                  VerticalScrollBarVisibility="Hidden" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>

    <Style.Triggers>
        <Trigger Property="IsEnabled" Value="False">
            <Setter Property="Opacity" Value="0.7"/>
        </Trigger>
    </Style.Triggers>
</Style>

因此,我想学习如何开发具有自定义控件的,基本上具有相同UI的跨平台应用程序(Android和iOS)。

我刚刚开始阅读它,但是我想确保可以创建类似的东西。

如何使用Xamarin.Forms实现呢?那可能吗?与WPF有何不同?

1 个答案:

答案 0 :(得分:1)

我以前没有使用过WPF,但是官方网站上有一份详细的文档,可以帮助WPFWindows Forms developers通过Xamarin跨平台学习移动应用开发-将他们的现有知识和经验参考到移动习惯用法,并提供将桌面应用程序移植到移动设备的示例。

这是文档:Cross-Platform for Desktop Developers

这部分是在谈论UI Controls Comparison

  

我想学习如何开发跨平台应用程序(Android和   iOS),带有自定义控件,基本上具有相同的UI。

如果您使用Xamarin.forms,则Android和iOS确实共享相同的UI。

本文档介绍如何在Xamarin中create controls。您可以在其中查找和学习示例。