我对 xamarin.forms 完全陌生。
我使用 XLabs 库在我的 PCL 项目(Xamarin Forms)中添加复选框。
当我在调试模式下运行我的应用程序 UWP ARM 时没有错误,但是当我在发布模式下运行应用程序时,复选框从未显示。
我需要配置什么设置吗?
我对 xamarin.forms 完全陌生。
我使用 XLabs 库在我的 PCL 项目(Xamarin Forms)中添加复选框。
当我在调试模式下运行我的应用程序 UWP ARM 时没有错误,但是当我在发布模式下运行应用程序时,复选框从未显示。
我需要配置什么设置吗?
正如@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>