如何使用 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}"
中说时,幕后发生的事情是:
- Xamarin正在寻找你的
BindingContext
- 如果找到此类上下文,则正在遍历该上下文以查找所需的此属性
- 如果未找到上下文,则逻辑上不会发生任何内容
因此,您的问题是您尚未设置BindingContext
,这意味着您的页面/视图不知道从哪里查找此常量值。可以为每个页面/视图/控件使用不同的绑定上下文。
最好让每个页面都有自己的BindingContext
集。这意味着您将MainPageViewModel.cs
课程。之后,您需要将页面的上下文设置为新创建的类,如下所示:
public MainPage()
{
InitializeComponent();
BindingContext = new MainPageViewModel();
}
如果您绝对需要将值放在App.xaml.cs
文件中而不是在页面的视图中模型中,则在您的MainPageViewModel
中您将拥有一个属性,该属性将从App.ShortVersion
中获取其值。