如何使用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中的绑定工作原理并不熟悉。我强烈建议您仔细阅读Data Binding Basics。
尽管如此,您的问题的答案是-是的,您可以将其绑定到const变量。但是,该变量需要是公共的。
总结绑定的工作原理-当您在xaml代码Text="{Binding App.ShortVersion}"
中说时,幕后发生的事情是:
BindingContext
因此,您的问题是您尚未设置BindingContext
,这意味着您的页面/视图不知道从何处查找该const值。每个页面/视图/控件可以具有不同的绑定上下文。
每个页面都有自己的BindingContext
设置是一种很好的做法。这意味着您将拥有MainPageViewModel.cs
类。之后,您需要将页面的上下文设置为新创建的类,如下所示:
public MainPage()
{
InitializeComponent();
BindingContext = new MainPageViewModel();
}
如果绝对需要在App.xaml.cs
文件中而不是在页面的viewModel中拥有值,则在MainPageViewModel
中您将拥有一个属性,该属性将从App.ShortVersion
中获取其值。