gpt4 book ai didi

c# - 将 XAML "Label"绑定(bind)到 Xamarin.Forms 中的代码隐藏 "public const"?

转载 作者:行者123 更新时间:2023-12-04 09:44:59 30 4
gpt4 key购买 nike

如何绑定(bind) Label在 XAML 中到 public const string在使用 Xamarin.Forms 的代码背后?

或者除了创建一个访问我的公共(public)常量的公共(public)静态属性之外别无他法?顺便说一句,可以将其设为 private const string反而。

我在“App”类中声明了一个公共(public) const 字符串:

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

然后我想将它绑定(bind)到我的“MainPage.xaml”文件中的标签:
<Label Text="{Binding App.ShortVersion}"  
x:Name="_versionLabel" Style="{StaticResource versionLabel}" ...
/>

这是我第一次尝试数据绑定(bind)。
现在我在我的“MainPage.xaml.cs”文件中这样做(而不是数据绑定(bind)):
public MainPage()
{
InitializeComponent();
_versionLabel.Text = App.ShortVersion;
}

最佳答案

根据您的评论,我发现您不熟悉绑定(bind)在 Xamarin 中的工作方式。我强烈建议您仔细阅读 Data Binding Basics .

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

总结一下绑定(bind)是如何工作的——当你在你的 xaml 代码中说 Text="{Binding App.ShortVersion}" ,幕后发生的事情是:

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

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

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

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

    如果你绝对需要在 App.xaml.cs 中拥有你的值(value)文件而不是在页面的 viewModel 中,在您的 MainPageViewModel 中您将拥有一个属性,该属性将从 App.ShortVersion 中获取其值.

    关于c# - 将 XAML "Label"绑定(bind)到 Xamarin.Forms 中的代码隐藏 "public const"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62171301/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com