Я довольно давно занимаюсь созданием настольных приложений на 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.Forms?Это возможно?Насколько он отличается от WPF?