#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 на каждой платформе. Также существуют некоторые ограничения на реализацию элементов управления на каждой платформе, в этой ситуации вам придется использовать пользовательский рендерер для реализации элементов управления. Большая часть пользовательского интерфейса является общей.