我想访问在 ViewModel 中创建的属性到隐藏文件的 xaml 代码。请查看随附的屏幕截图,以便更好地理解我的问题。
请点击这里查看我的Xaml代码的屏幕截图
单击此处获取属性代码
我已将"EntryText"属性绑定到Entry字段,将"LblText"属性绑定到Label。所以,现在我只想在按钮单击事件上将 Enter 的值转移到标签。
你走在正确的轨道上,只是需要稍微不同地搜索。有多种方法可以做到这一点。我会告诉你最简单的方法,因为 Xamarin 官方文档中也建议这样做。所以你的 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);
}
}
可以使用代码隐藏来调用视图模型中的方法。因此,在该方法中,您可以更改LblText。请参阅下面的代码。
<Button x:Name="btn1" Clicked="btnClicked" />
在代码隐藏中
private void btnClicked(object sender, EventArgs e){
_viewModel.ChangeLabelText();
}
在视图模型中
public void ChangeLabelText() {
LblText = EntryText;
}
您可以使用页面的 BindingContext 并将其强制转换为模型。然后,然后从那里访问该物业。
var myModel = this.BindingContext as MainPageProperties;
if(myModel!=null)
{
//Access your property here!
var text = myModel.LblText;
}