如何为Phone7 Silverlight应用程序使用{x:Static …}扩展?

前端之家收集整理的这篇文章主要介绍了如何为Phone7 Silverlight应用程序使用{x:Static …}扩展?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写一个Phone 7应用程序,我想在标记中引用常量值.我相信应该这样做的方式是通过 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:没有找到静态“验证…”.

解决方法

x:静态仅在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)中:

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

在使用它的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>

*这个例子取自Using localized strings in a ListPicker populated from Enum的答案

猜你在找的Silverlight相关文章