2017-01-10 34 views
0

引用Xamarin Forms xaml頁面中的靜態變量/屬性引用的概念(https://developer.xamarin.com/guides/xamarin-forms/xaml/xaml-basics/xaml_markup_extensions/);有關於引用這樣一段:Xamarin表示靜態類引用:多個級別下降

BackgroundColor="{x:Static local:AppConstants.ForegroundColor}" 

...其中地方是聲明命名空間,AppConstants.ForegroundColor指的是靜態屬性的靜態類,像這樣:

namespace XamlSamples 
{ 
    static class AppConstants 
    { 
     public static readonly Color ForegroundColor = 
      Device.OnPlatform(Color.Black, Color.White, Color.White); 

     .... 
    } 
} 

我的問題是,它似乎不工作,如果它下降到另一個級別(不知道該怎麼說)。例如,如果我想結合:

SomeNumericalValue="{x:Static local:AppConstants.ForegroundColor.Hue}" 

...這是行不通的:它拋出一個編譯錯誤「中的xmlns找不到類型AppConstants.ForegroundColor‘namespacename ......’」。它似乎無法再進一步訪問'Hue'屬性。

我不明白,這在WPF中有效,但我無法在Xamarin Forms中找到相應的方法。我錯過了什麼嗎?是否因爲「色相」不是靜態的?

+0

我想我只是碰到了解決方案:我必須在'x:Static'前添加'綁定'。 雖然它是如何或爲什麼起作用,我不知道。我谷歌搜索的例子似乎沒有說明這一點。無論如何,希望它可以幫助任何人遇到同樣的問題... –

回答

0

檢查以確保AppConstants是公共類。在上面的代碼片段中,不會導致您看到的錯誤。

+0

是的,課堂是公開的。對不起,只是使用教程的代碼作爲例子。我的同班人是正確的。 –

0

你有沒有試圖消除x:static,只是這樣做:

SomeNumericalValue="{local:AppConstants.ForegroundColor.Hue}" 
+0

沒有。同樣的錯誤出現了... –

0

我找到了答案稍後不久:我回答我自己的意見,但我想最好還是把它放在這裏。

解決的辦法是添加在最前面「綁定」:

SomeNumericalValue="{Binding x:Static local:AppConstants.ForegroundColor.Hue}" 

如何或爲何,我還是不明白。希望這有助於任何遇到同樣事情的人,但也會感謝任何能夠解釋差異的人。