我正在编写一个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的答案
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。