[英]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}"
中说时,幕后发生的事情是:
BindingContext
所以,你的问题是你没有设置你的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.