2017-12-29 78 views
0

私はXamarin.formsで新しく、リストから作成した複数のCheckBoxを使用しようとしています。Xamarin.formsでCheckBoxを使用するには?

私はCheckBoxがXamarin.formsに存在しないことを理解していますので、コントロールを作成するためにインターネット上で見つけたクラスを作成しました。

CheckBoxを作成しようとすると表示されません。私は、チェックボックスを作成するとき、これはコードです:

if (List1 != null && List1.Count > 0) 
{ 
    foreach (var c in List1) 
    { 
     CheckBox chk = new CheckBox(); 
     chk.CheckedChanged += Chk_CheckedChanged; 
     chk.IsVisible = true; 
     chk.CheckBoxBackgroundColor = Color.Blue; 
     chk.TickColor = Color.Blue; 
     chk.WidthRequest = 12; 
     chk.HeightRequest = 12; 
     StackLayoutBody.Children.Add(chk); 
    } 
} 

そして、これはCheckBox.csのコードです:

using System; 
using Xamarin.Forms; 

namespace TECAndroid.Services 
{ 
    public class CheckBox : View 
    { 
     public static readonly BindableProperty CheckedProperty = 
      BindableProperty.Create(nameof(Checked), typeof(bool), typeof(CheckBox), false, BindingMode.TwoWay, 
       propertyChanged: (bindable, oldValue, newValue) => 
       { 
        ((CheckBox)bindable).CheckedChanged?.Invoke(bindable, new CheckedChangedEventArgs((bool)newValue)); 
       }); 


     public static readonly BindableProperty TickColorProperty = 
      BindableProperty.Create(nameof(TickColor), typeof(Color), ypeof(CheckBox), Color.Default, BindingMode.TwoWay); 

     public static readonly BindableProperty CheckBoxBackgroundColorProperty = BindableProperty.Create(nameof(CheckBoxBackgroundColor), typeof(Color), typeof(CheckBox), Color.Default, BindingMode.TwoWay); 

     public EventHandler<CheckedChangedEventArgs> CheckedChanged; 

     public Color TickColor 
     { 
      get => (Color)GetValue(TickColorProperty); 
      set => SetValue(TickColorProperty, value); 
     } 

     public Color CheckBoxBackgroundColor 
     { 
      get => (Color)GetValue(CheckBoxBackgroundColorProperty); 
      set => SetValue(CheckBoxBackgroundColorProperty, value); 
     } 

     public bool Checked 
     { 
      get => (bool)GetValue(CheckedProperty); 
      set 
      { 
       if (Checked != value) SetValue(CheckedProperty, value); 
      } 
     } 
    } 

    public class CheckedChangedEventArgs : EventArgs 
    { 
     public CheckedChangedEventArgs(bool value) 
     { 
      Checked = value; 
     } 

     public bool Checked { get; } 
    } 
} 

誰も私を助けてくださいことができます!

+0

オンラインで見つかった元のクラスを投稿すると – Greggz

+0

Xamlも同様に – Greggz

+0

このクラスはチェックボックスのUIを実装していません。ネイティブレンダラーを作成するのはXamarin.Formsクラスです。通常、私はチェックボックスが必要なときにスイッチを使用しますが、スイッチが十分でない場合は、各プラットフォームでネイティブレンダラの実装を探すか、Xamarin.Formsのビューを使用してクロスプラットフォームの実装を探す必要があります。 –

答えて

0

このクラスは、チェックボックスのUIを実装していません。ネイティブレンダラーを作成するのはXamarin.Formsクラスです。通常、私はチェックボックスが必要なときにスイッチを使用しますが、スイッチが十分でない場合は、各プラットフォームでネイティブレンダラの実装を探すか、Xamarin.Formsのビューを使用してクロスプラットフォームの実装を探す必要があります。

あなたが望むコントロールはSwitchCellではなく、単にSwitchです。必要に応じて、例:Switch Documentationのドキュメントへのリンクがあります。

関連する問題