2011-01-16 5 views
10

Sto scrivendo un'app Phone 7 e vorrei fare riferimento ai valori costanti nel markup. Credo che il modo in cui si dovrebbe fare questo è via x:Static.Come posso usare l'estensione {x: Static ...} per le app Phone7 Silverlight?

Tuttavia, Visual Studio continua a sostenere che non è a conoscenza di x:static. Qual è la salsa segreta qui? Ho il seguente:

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

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

E naturalmente:

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

L'errore è "Il tipo 'x: Static'. Non è stato trovato Verificare che ...".

risposta

17

x:Static è disponibile solo in WPF: Silverlight per il browser e Silverlight per Windows Phone 7 non supportano questa estensione di markup.

La solita soluzione alternativa consiste nel creare una classe (non statica) che abbia proprietà che semplicemente racchiudono le proprietà statiche desiderate e crea un'istanza come risorsa e vincola in questo modo.

Esempio *:

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

nelle risorse (app.xaml):

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

In XAML in cui viene utilizzato:

<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> 

* Questo esempio è tratto da una risposta in Using localized strings in a ListPicker populated from Enum

+0

Ok, beh, sembra un sacco di lavoro per avere una costante. Ma, okay, se è così com'è, è così che è. Grazie. –

+2

Per il tuo caso d'uso specifico, forse uno stile sarebbe migliore? Quindi puoi impostare l'altezza su tutto ciò che vuoi una volta, utilizzare quello stile su tutti gli elementi dell'immagine e ottenere lo stesso livello di "modifica una volta, applicare ovunque". –

+0

È 'x: Statico', con una" S "maiuscola. XAML fa distinzione tra maiuscole e minuscole ... –