繁体   English   中英

将 XAML “Label”绑定到 Xamarin.Forms 中“public const”后面的代码?

[英]Bind XAML “Label” to Code Behind “public const” in Xamarin.Forms?

如何将Label中的 Label 绑定到使用 Xamarin.Z645024626253198A392861 的代码隐藏中的public const string

或者除了创建一个访问我的公共常量的公共 static 属性之外别无他法? 顺便说一句,然后可以将其设为private const string

我在我的“App”class 中声明了一个公共 const 字符串:

public partial class App : Application
{
    public const string ShortVersion = "v1.00 Beta 1";
    ...

然后我想将它绑定到我的“MainPage.xaml”文件中的 label:

<Label Text="{Binding App.ShortVersion}"  
       x:Name="_versionLabel" Style="{StaticResource versionLabel}" ...
/>

这是我第一次尝试数据绑定。
现在我在我的“MainPage.xaml.cs”文件中这样做(而不是数据绑定):

public MainPage()
{
    InitializeComponent();
    _versionLabel.Text = App.ShortVersion;
}

根据您的评论,我发现您不熟悉 Xamarin 中的绑定工作原理。 我强烈建议您通读Data Binding Basics

不过,您的问题的答案是 - 是的,您可以将其绑定到 const 变量。 但是,该变量必须是公开的。

总结一下绑定的工作原理-当您在 xaml 代码Text="{Binding App.ShortVersion}"中说时,幕后发生的事情是:

  1. Xamarin 正在寻找您的BindingContext
  2. 如果找到这样的上下文,则会遍历它以找到您想要的这个属性
  3. 如果没有找到上下文,逻辑上什么都没有发生

所以,你的问题是你没有设置你的BindingContext ,这意味着你的页面/视图不知道从哪里寻找这个 const 值。 您可以为每个页面/视图/控件设置不同的绑定上下文。

每个页面都有自己的BindingContext集是一种很好的做法。 这意味着您将拥有MainPageViewModel.cs class。 之后,您需要将页面的上下文设置为新创建的 class ,如下所示:

public MainPage()
{
    InitializeComponent();
    BindingContext = new MainPageViewModel();
}

如果您绝对需要在App.xaml.cs文件中而不是在页面的 viewModel 中具有您的值,那么在您的MainPageViewModel您将拥有一个属性,它将从App.ShortVersion中获取其值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM