如何将属性从ViewModel访问到位于Xaml视图代码背后的ButtonClickeEvent?
我想将ViewModel中创建的属性访问到xaml代码隐藏文件。请看附件中的截图,以便更好地理解我的问题如何将属性从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
我已将“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;
}