在创建的XAML模板中切换开关时,如何捕捉?

时间:2018-08-02 01:57:58

标签: xamarin xamarin.forms

我有这个模板:

<?xml version="1.0" encoding="utf-8"?>
<StackLayout xmlns="http://xamarin.com/schemas/2014/forms"
              xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
              xmlns:local="clr-namespace:Test;assembly=Test" 
              x:Class="Test.Templates.SwitchTemplate" 
              x:Name="this" >
    <Switch IsToggled="{Binding IsToggled, Source={x:Reference this}}" />
</StackLayout>

我的CS后端看起来像这样:

public partial class SwitchTemplate : StackLayout
{
    public SwitchTemplate()
    {
        InitializeComponent();
    }
       
    public static readonly BindableProperty IsToggledProperty =
           BindableProperty.Create(
                nameof(IsToggled),
                typeof(bool),
                typeof(SwitchTemplate),
                default(bool));
        
    public bool IsToggled
    {
        get { return (bool)GetValue(IsToggledProperty); }
        set { SetValue(IsToggledProperty, value); }
    }
}

我想做的是在XAML的后端CS中有一个调用的方法,该方法在切换状态改变时使用模板。

有人可以给我一些有关如何编码XAML模板,其后端CS和使用该模板的XAML的CS的建议,以便在切换状态更改时可以执行一些操作吗?

1 个答案:

答案 0 :(得分:0)

尝试将此(propertyChanged)添加到您的创建中

public static readonly BindableProperty IsToggledProperty =
           BindableProperty.Create(
                nameof(IsToggled),
                typeof(bool),
                typeof(SwitchTemplate),
                default(bool),
                propertyChanged: PropertyChanged);

并添加此方法:

private static void PropertyChanged(BindableObject bindable, object oldValue, object newValue)
{
    var control = (SwitchTemplate)bindable;
    //Do something :)
}