我想访问在ViewModel中创建的属性到文件后面的xaml代码。请查看随附的屏幕截图,以更好地理解我的问题。
Please Click Here to View the Screenshot of my Xaml code
Click Here for the Properties code
我已将“ EntryText”属性绑定到Entry字段,并将“ LblText”属性绑定到Label。因此,现在我只想在按钮单击事件中将Entry的值传输到Label。
答案 0 :(得分:0)
您可以使用页面的BindingContext并将其强制转换为模型。然后,从那里访问属性。
var myModel = this.BindingContext as MainPageProperties;
if(myModel!=null)
{
//Access your property here!
var text = myModel.LblText;
}
答案 1 :(得分:0)
您处在正确的轨道上,只需要略有不同的搜索即可。 有多种方法可以做到这一点。我将告诉您最简单的方法,因为Xamarin Official Docs中也建议这样做。因此您的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>
您的C#文件将如下所示
public partial class BasicButtonClickPage : ContentPage
{
public BasicButtonClickPage ()
{
InitializeComponent ();
}
async void OnButtonClicked(object sender, EventArgs args)
{
await label.RelRotateTo(360, 1000);
}
}
答案 2 :(得分:0)
您可以使用代码隐藏在视图模型中调用方法。因此,在该方法中,您可以更改LblText。请参考下面的代码。
<Button x:Name="btn1" Clicked="btnClicked" />
隐藏在代码中
private void btnClicked(object sender, EventArgs e){
_viewModel.ChangeLabelText();
}
在视图模型中
public void ChangeLabelText() {
LblText = EntryText;
}