如何将属性从ViewModel访问到位于Xaml视图代码背后的ButtonClickeEvent?

如何将属性从ViewModel访问到位于Xaml视图代码背后的ButtonClickeEvent?,xaml,xamarin,xamarin.forms,Xaml,Xamarin,Xamarin.forms,我想将ViewModel中创建的属性访问到xaml代码隐藏文件。请看附件中的截图,以便更好地理解我的问题 我已将“EntryText”属性绑定到输入字段,将“LblText”属性绑定到标签。因此,现在我只想将条目的值传递到按钮单击事件的标签。您可以使用页面的绑定上下文并将其强制转换到您的模型。然后,从那里访问该属性 var myModel = this.BindingContext as MainPageProperties; if(myModel!=null) { //Access

我想将ViewModel中创建的属性访问到xaml代码隐藏文件。请看附件中的截图,以便更好地理解我的问题


我已将“EntryText”属性绑定到输入字段,将“LblText”属性绑定到标签。因此,现在我只想将条目的值传递到按钮单击事件的标签。

您可以使用页面的绑定上下文并将其强制转换到您的模型。然后,从那里访问该属性

var myModel = this.BindingContext as MainPageProperties;
if(myModel!=null)
{
    //Access your property here!
    var text = myModel.LblText;
}

你在正确的轨道上,只需要稍微不同的搜索。 有多种方法可以做到这一点。我会告诉你最简单的方法,因为这也是在。因此,您的Xaml代码将如下所示

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="ButtonDemos.BasicButtonClickPage"
             Title="Basic Button Click">
    <StackLayout>
        <Label x:Name="label"
               Text="Click the Button below"
               FontSize="Large"
               VerticalOptions="CenterAndExpand"
               HorizontalOptions="Center" />
        <Button Text="Click to Rotate Text!"
                VerticalOptions="CenterAndExpand"
                HorizontalOptions="Center"
                Clicked="OnButtonClicked" />
    </StackLayout>
</ContentPage>
public partial class BasicButtonClickPage : ContentPage
{
    public BasicButtonClickPage ()
    {
        InitializeComponent ();
    }

    async void OnButtonClicked(object sender, EventArgs args)
    {
        await label.RelRotateTo(360, 1000);
    }
}

您可以使用代码隐藏来调用视图模型中的方法。因此,在该方法中,您可以更改LblText。请参阅下面的代码

<Button x:Name="btn1" Clicked="btnClicked" />
在视图模型中


public void ChangeLabelText() {

   LblText = EntryText;

}


您的想法是正确的,只需将标签绑定到text属性,然后单击按钮将LblText的值设置为条目的值。对于初始情况,您可以将LblText默认值设置为“输入您的姓名”。对不起,我刚收到您的问题,您可以将命令绑定到按钮单击事件。您可以将该命令放置在viewmodel中,并在其中访问其他属性。我可以通过将命令绑定到单击按钮来实现此结果。但我只是想知道,是否有任何方法可以使用button click事件实现相同的结果。我的意思是,有没有办法访问ButtonClickEvent中的LblText属性和EntryText属性?最好在方法
OnBindingContextChanged()
中获取bindingContext:

public void ChangeLabelText() {

   LblText = EntryText;

}