Являются ли Xamarin.Пользовательские элементы управления Forms созданы так же, как WPF / Desktop?

#c# #xaml #xamarin.forms #custom-controls

#c# #xaml #xamarin.forms #пользовательские элементы управления

Вопрос:

Я довольно давно создаю настольные приложения с 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>
  

Итак, я хочу узнать, как разработать кроссплатформенное приложение (Android и iOS) с пользовательскими элементами управления, в основном имеющими тот же пользовательский интерфейс.

Я только начал читать об этом, но я хочу быть уверен, что возможно создать что-то подобное.

Как я могу добиться этого с помощью Xamarin.Формы? Возможно ли это? Насколько это отличается от WPF?

Ответ №1:

Я не использую WPF раньше, но на официальном сайте есть подробный документ, который помогает WPF и Windows Forms developers изучить разработку мобильных приложений с Xamarin помощью перекрестных ссылок на их существующие знания и опыт в области мобильных идиом и предоставляет примеры переноса настольных приложений на мобильные.

Вот документ:Кроссплатформенный для разработчиков настольных компьютеров.

В этой части речь идет о сравнении элементов управления пользовательского интерфейса.

Я хочу узнать, как разработать кроссплатформенное приложение (Android и iOS) с пользовательскими элементами управления, в основном имеющими тот же пользовательский интерфейс.

Если вы используете Xamarin.forms, Android и iOS используют один и тот же пользовательский интерфейс.

В этом документе рассказывается о том, как создавать элементы управления в Xamarin. Там есть образцы, которые вы можете посмотреть и изучить.

Комментарии:

1. Итак, они используют один и тот же пользовательский интерфейс, не требуя пользовательского средства визуализации для каждой платформы? Я читал об этом, но я не был уверен, были ли это формы или проект Android / iOS.

2. О, да, похоже, нет необходимости в пользовательском средстве визуализации: mindofai.github.io /…

3. Странно, что здесь используется средство визуализации: blog.xamarin.com /…

4. @NickeManarin Проект Android и iOS использует общий пользовательский интерфейс в Xamarin.forms. Однако не все элементы управления одинаковы на каждой платформе. Вы можете использовать пользовательский рендерер для настройки внешнего вида и поведения элементов управления Xamarin.forms на каждой платформе. Также существуют некоторые ограничения на реализацию элементов управления на каждой платформе, в этой ситуации вам придется использовать пользовательский рендерер для реализации элементов управления. Большая часть пользовательского интерфейса является общей.