2011-01-16 9 views
10

私は電話7アプリを書いています。マークアップで定数値を参照したいと思います。私はこれを行う方法はx:Static経由であると信じています。Phone7 Silverlightアプリケーションの{x:Static ...}拡張機能を使用するにはどうすればよいですか?

ただし、Visual Studioはx:staticの知識がないと主張し続けます。ここの秘密のソースは何ですか?

<phone:PhoneApplicationPage 
    ... 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    ... 

    <Image Height="{x:Static App.ImageHeight}" ... /> 
    ... 

そしてもちろん::私には、以下の持っている

public partial class App : Application 
{ 
    public const double ImageHeight = 100; 
    ... 

エラーメッセージがある " 'X:静的' タイプ。見つからなかったことを確認してください..."。

答えて

17

x:Staticは、WPFでのみ使用できます。ブラウザ用のSilverlightもWindows Phone 7用のSilverlightも、このマークアップ拡張をサポートしていません。

通常の回避策は、必要な静的プロパティを単にラップするプロパティを持つ(非静的な)クラスを作成し、そのインスタンスをリソースとして作成し、そのようにバインドします。

例*:リソースで

public class StaticSideEnums 
{ 
    public static Side Bid { get { return Side.Bid; } } 
    public static Side Ask { get { return Side.Ask; } } 
} 

(app.xaml):

<toolkit:ListPicker Name="picker" SelectionChanged="OnSelectionChanged"> 
    <toolkit:ListPickerItem Content="Buy" Tag="{Binding Bid, Source={StaticResource StaticSideEnums}}" /> 
    <toolkit:ListPickerItem Content="Sell" Tag="{Binding Ask, Source={StaticResource StaticSideEnums}}" /> 
</toolkit:ListPicker> 

*この例はから取られる:使われているXAMLで

<ResourceDictionary> 
    <local:StaticSideEnums x:Key="StaticSideEnums"/> 
</ResourceDictionary> 

答えはUsing localized strings in a ListPicker populated from Enum

+0

さて、まあ、それはちょうど定数を持つ多くの仕事のように思えます。しかし、大丈夫です、それがそうであれば、そうです。ありがとう。 –

+2

あなたの特定のユースケースについては、多分スタイルが良いでしょうか?次に、Heightを1回したいものに設定し、すべてのイメージ要素でそのスタイルを使用し、同じレベルの「一度変更して、どこにでも適用する」ことができます。 –

+0

'x:Static'、大文字の" S "です。 XAMLは大文字と小文字を区別します。 –

関連する問題