0
スイッチラベルと呼ばれるカスタムコントロールを作成したいとします。スタックレイアウトの中にラベルとスイッチを入れます。私の目的はSwitchCellのようなコントロールを作ることです。StackLayoutでBindableプロパティが機能しない
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class SwitchLabel : StackLayout
{
public SwitchLabel()
{
BindingContext = this;
InitializeComponent();
}
public static readonly BindableProperty TitleProperty = BindableProperty.Create(
propertyName: nameof(Title),
returnType: typeof(string),
declaringType: typeof(SwitchLabel),
defaultValue: string.Empty,
defaultBindingMode: BindingMode.TwoWay);
public static readonly BindableProperty IsOnProperty = BindableProperty.Create(
propertyName: nameof(IsOn),
returnType: typeof(bool),
declaringType: typeof(SwitchLabel),
defaultValue: false,
defaultBindingMode: BindingMode.TwoWay);
public string Title
{
get
{
return (string)GetValue(TitleProperty);
}
set
{
SetValue(TitleProperty, value);
}
}
public bool IsOn
{
get
{
return (bool)GetValue(IsOnProperty);
}
set
{
SetValue(IsOnProperty, value);
}
}
}
背後
<?xml version="1.0" encoding="UTF-8"?>
<StackLayout xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MobileRKE.Controls.SwitchLabel"
Orientation="Horizontal">
<Label x:Name="lbTitle" HorizontalOptions="FillAndExpand" Text="{Binding Title}" VerticalOptions="Center"/>
<Switch x:Name="swtValue"
IsToggled="{Binding IsOn}"
VerticalOptions="Start"/>
</StackLayout>
コードは、私は正しい方法でそれを書くのですか? モデルをバインドするときにバインディングが実行されないことが判明しました