我正在编写一个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:Static'。验证...”。
答案 0 :(得分: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)中:
<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
中的答案