将 XAML "Label"绑定到 Xamarin.Forms 中的代码隐藏"public const"?



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

或者除了创建一个访问我的公共常量的公共静态属性之外,没有其他方法吗?顺便说一下,这可以成为private const string

我在我的"App"类中声明了一个公共常量字符串:

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

然后我想将它绑定到我的"MainPage.xaml"文件中的标签:

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

这是我第一次尝试数据绑定。
现在我正在我的"MainPage.xaml.cs"文件中执行此操作(而不是数据绑定(:

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

根据您的评论,我看到您不熟悉 Xamarin 中的绑定工作原理。我强烈建议您仔细阅读数据绑定基础知识。

尽管如此,您的问题的答案是 - 是的,您可以将其绑定到 const 变量。但是,变量必须是公共的。

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

  1. Xamarin正在寻找你的BindingContext
  2. 如果找到此类上下文,则正在遍历该上下文以查找所需的此属性
  3. 如果未找到上下文,则逻辑上不会发生任何内容

因此,您的问题是您尚未设置BindingContext,这意味着您的页面/视图不知道从哪里查找此常量值。可以为每个页面/视图/控件使用不同的绑定上下文。

最好让每个页面都有自己的BindingContext集。这意味着您将MainPageViewModel.cs课程。之后,您需要将页面的上下文设置为新创建的类,如下所示:

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

如果您绝对需要将值放在App.xaml.cs文件中而不是在页面的视图中模型中,则在您的MainPageViewModel中您将拥有一个属性,该属性将从App.ShortVersion中获取其值。

最新更新