簡體   English   中英

將 XAML “Label”綁定到 Xamarin.Forms 中“public const”后面的代碼?

[英]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}"中說時,幕后發生的事情是:

  1. Xamarin 正在尋找您的BindingContext
  2. 如果找到這樣的上下文,則會遍歷它以找到您想要的這個屬性
  3. 如果沒有找到上下文,邏輯上什么都沒有發生

所以,你的問題是你沒有設置你的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM