Xamrin Button不适用于mmvm-light Relay Command

时间:2018-02-06 13:05:44

标签: xamarin xamarin.forms mvvm-light relaycommand

在我的Xamrin表单代码中,我配置了MVVM灯 即使我在xaml页面中为该命令设置了属性,RelayCommand也没有命中。

XAML

<?xml version="1.0" encoding="utf-8"?><ContentPage BackgroundColor="White" xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         x:Class="ContractorActionSolution.CSA.CSAContentPages.Demo">
<ContentPage.Padding>
    <OnPlatform x:TypeArguments="Thickness">
        <OnPlatform.iOS>0,20,0,0</OnPlatform.iOS>
    </OnPlatform>
</ContentPage.Padding>
<ContentPage.Content>
    <StackLayout Padding="10" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
        <Image x:Name="imgLogo" Source="sisystems_logo.jpg" HorizontalOptions="FillAndExpand" VerticalOptions="Start"/>
        <StackLayout VerticalOptions="CenterAndExpand" Padding="20" HorizontalOptions="FillAndExpand">
            <Label x:Name="lblmsg" TextColor="#F25B63" Text="Error Message"/>
            <Entry x:Name="txtUserName" Placeholder="Email"/>
            <Entry x:Name="txtPassword" Placeholder="Password" IsPassword="True"/>
            <Button  Command="{Binding IncrementCommand}" Text="Continue"/>
            <Label Text="Can't Login ?" TextColor="#F25B63" HorizontalOptions="Center"/>
        </StackLayout>
    </StackLayout>
</ContentPage.Content>

代码

public partial class Demo : ContentPage
{      
    DemoViewModel _myViewModel;
    public Demo ()
    {
        InitializeComponent ();           
    }
    protected override void OnAppearing()
    {
        base.OnAppearing();
        BindingContext = App.Locator.DemoVM;
        _myViewModel = BindingContext as DemoViewModel;
    }
    protected override void OnDisappearing()
    {
        base.OnDisappearing();
        _myViewModel.CleanUP();
    }
}

模型

public class DemoViewModel : BaseViewModel
{      
    private string _name;
    public string Name
    {
        get { return _name; }
        set { Set(() => Name, ref _name, value); }
    }

    private RelayCommand _incrementCommand;
    /// <summary>  
    /// Gets the IncrementCommand.  
    /// </summary>  
    public RelayCommand IncrementCommand
    {
        get
        {
            return _incrementCommand ?? (_incrementCommand = new RelayCommand(
                () =>
                {                        
                }));
        }
    }
    public void CleanUP()
    {
        Name = string.Empty;
    }        
}

我也尝试使用RelayCommandRelayAsyncCommand两者都无效。

属性绑定工作正常,

我可以使用string属性为条目添加绑定,但无法使用按钮添加RelayCommand

1 个答案:

答案 0 :(得分:2)

问题可能是处理程序为空并且编译后优化实际上省略了它。尝试在Debug.WriteLine("Test");内添加任何内容,以查看断点是否被点击。