1

我对 xamarin.forms 完全陌生。

我使用 XLabs 库在我的 PCL 项目(Xamarin Forms)中添加复选框。

当我在调试模式下运行我的应用程序 UWP ARM 时没有错误,但是当我在发布模式下运行应用程序时,复选框从未显示。

我需要配置什么设置吗?

4

1 回答 1

4

正如@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>

在此处输入图像描述

于 2017-06-26T03:04:36.330 回答