Флажки не отображаются в режиме релиза UWP (Xamarin Forms)

Я совершенно новичок в xamarin.forms.

Я использовал библиотеку XLabs для добавления флажков в своем проекте PCL (Xamarin Forms).

Когда я запускаю приложение UWP ARM в режиме отладки, ошибки не возникает, но когда я запускаю приложение в режиме выпуска, флажки никогда не отображаются.

Есть ли какие-либо настройки, которые мне нужно настроить?

1 ответ

Решение

Как сказал @hugo, библиотека XLabs больше не поддерживается. Может не работать с более новыми версиями Xamarin.Forms. По вашему требованию вы можете использовать Switch установите флажок для замены флажка или используйте пользовательский флажок. В следующем коде реализован простой флажок. Для получения дополнительной информации обратитесь к разделу "Введение в пользовательские средства визуализации".

CustomCheckBox.cs

public class CustomCheckBox : View
{
    public static readonly BindableProperty CheckedProperty =
    BindableProperty.Create("Checked", typeof(bool), typeof(CustomCheckBox), default(bool));

    public bool Checked
    {
        get { return (bool)GetValue(CheckedProperty); }
        set { SetValue(CheckedProperty, value); }
    }

}

CustomCheckBoxRenderer.cs

[assembly: ExportRenderer(typeof(CustomCheckBox), typeof(CustomCheckBoxRenderer))]
namespace LabsTest.UWP
{
    public class CustomCheckBoxRenderer : ViewRenderer<CustomCheckBox, Windows.UI.Xaml.Controls.CheckBox>
    {
        protected override void OnElementChanged(ElementChangedEventArgs<CustomCheckBox> e)
        {
            base.OnElementChanged(e);
            if (Control == null)
            {
                SetNativeControl(new Windows.UI.Xaml.Controls.CheckBox());
            }
            if (Control != null)
            {
                Control.IsChecked = Element.Checked;
            }
        }
        protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            base.OnElementPropertyChanged(sender, e);
            if (e.PropertyName == nameof(Element.Checked))
            {
                UpdateStatus();
            }
        }
        private void UpdateStatus()
        {
            Control.IsChecked = Element.Checked;
        }
    }
}

использование

<StackLayout HorizontalOptions="Center" VerticalOptions="Center">
    <local:CustomCheckBox x:Name="MyCheckBox" Checked="True">
    </local:CustomCheckBox>
</StackLayout>

Другие вопросы по тегам