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;
        }

    }