C# Xamarin公共类数据如何正确访问它
我从另一个带有C# Xamarin公共类数据如何正确访问它,c#,xaml,xamarin,xamarin.forms,C#,Xaml,Xamarin,Xamarin.forms,我从另一个带有 var check = new check { Age = (int)Convert.ToInt64(Ageg) }; var secondPage = new Sdeduction (); secondPage.BindingContext = check; await Navigation.PushA
var check = new check
{
Age = (int)Convert.ToInt64(Ageg)
};
var secondPage = new Sdeduction ();
secondPage.BindingContext = check;
await Navigation.PushAsync(secondPage);
并于
public class check
{
public int Age { get; set; }
}
public Sdeduction()
{
InitializeComponent();
}
但我无法直接访问年龄进行某些计算。lile tta.Text=Age.ToString()
所以我使用绑定。这很有效
<Label x:Name="Ages" Text="{Binding Age}"></Label>
但它是旧的。文本是空的
主要问题是如何从公共类检查中获取数据
public class check
{
public int Age { get; set; }
}
如何在c#的其他部分获得此公共int。从何处传递数据
我可以绑定,但所有内容都是关于xaml级别的绑定属性和上下文。我喜欢从其他页面获取数据,但只能使用x:names Ages进行绑定,而当页面加载/初始化组件时,它没有Ages的名称。将Sdeduction实例的BindingContext设置为check实例,然后导航到Sdeduction。这是导航时传递数据的正确方式 但是,当您在Sdeduction()方法中检查Age as page load时,它总是在Sdeduction页面设置BindingContext之前得到0。您需要加载OnAppearing()方法 主页: xaml: D减少: Xaml: 请查看屏幕截图:
请阅读有关绑定的任何教程。您不应该试图访问
Ages.text
。您应该访问一个“绑定”变量,Age2
。(我给它起了这个名字,以避免与其他地方已有的Age
混淆。)Age 2
应该位于页面的BindingContext
中,并且reduction
需要设置它。假设用作绑定上下文的类名为MyViewModel
。然后,您可以在页面加载期间以((MyViewModel)BindingContext)的身份访问。Age2
。好的,我实际上能够绑定,并且可能在页面呈现后可以运行一些有帮助的功能。但我的主要问题是获取通过这种方式传递的数据。一周多以来一直在学习新语言。如果有帮助的话,我非常感谢你,有什么简单的方法可以让int在页面之间传递,而int可以访问整个页面。你可以尝试通过页面构造函数传递数据。检查下面的链接。
public class check
{
public int Age { get; set; }
}
<StackLayout>
<Label x:Name="label" Text="10" />
<Button Clicked="Button_Clicked" Text="Navigate" />
</StackLayout>
public partial class MainPage : ContentPage
{
string Ageg;
public MainPage()
{
InitializeComponent();
Ageg = label.Text;
}
async void Button_Clicked(object sender, EventArgs e)
{
var check = new check
{
Age = (int)Convert.ToInt64(Ageg)
};
var secondPage = new Sdeduction();
secondPage.BindingContext = check;
await Navigation.PushAsync(secondPage);
}
}
<StackLayout>
<Label
HorizontalOptions="CenterAndExpand"
Text="Welcome to Sdeduction!"
VerticalOptions="CenterAndExpand" />
<Label x:Name="Ages" Text="{Binding Age}" />
<StackLayout Orientation="Horizontal">
<Button
x:Name="TTA"
IsVisible="false"
Text="TTA" />
<Button
x:Name="TTB"
IsVisible="false"
Text="TTB" />
</StackLayout>
</StackLayout>
protected override void OnAppearing()
{
base.OnAppearing();
int aged = (int)Convert.ToInt64(Ages.Text);
if (aged == 0)
{
TTA.IsVisible = true;
}
if (aged > 0)
{
TTB.IsVisible = true;
//Ds.IsVisible = true;
}
}