【51CTO译文】能够绑定到一个应用程序的各个部分,这是对全局变量的一个基本要求。人们通常认为这样的变量是静态的。
这个问题在论坛上似乎开始流行起来,通常的建议是,包含“全局“变量模型的一部分作为页面的DataContext使用,或许是不可能的。在模型中进行这样的功能复制,是不明智的,也是没有必要的。
它不可能绑定到一个静态类,因为绑定需要一个对象实例。
当然,你也可以绑定到一个类的静态属性。
我们可以绑定下面的静态属性
- namespace StaticBinding
- {
- public class MyStaticClass
- {
- private static string myStaticProperty = "my static text";
- public static string MyStaticProperty
- {
- get { return myStaticProperty; }
- set { myStaticProperty = value; }
- }
- }
- }
然后,我们可以创建一个应用程序级别的资源,我们实际上可以绑定到下面的代码:
- .. xmlns:myns="clr-namespace:StaticBinding"
- <application.resources>
- <mystaticclass x:key="MyStaticClassResource"></mystaticclass>
- </application.resources>
真不好意思,不知道代码为什么会迫使大写,我敢肯定你足够聪明,能分辨出什么应该被大写。
- ..
- <textblock text="{Binding Path=MyStaticProperty, Source={StaticResource MyStaticClassResource}}">
- ..
- </textblock>
这是一个很好的方面,你甚至可以得到IntelliSense的路径。(假设你事先设置了“Source”)
原文出处
原文名:Binding to static classes in Windows Phone 7
作者:Matt Lacey
【51CTO.com独家特稿,非经授权谢绝转载,合作媒体转载请注明原文作者及出处!】
【编辑推荐】
- Windows Phone 7设计评测报告
- 微软发布Windows Phone 7开发者向导
- 信息图表:Windows Phone 7分析报告
- 使用IronRuby开发Windows Phone 7应用程序
- 不编程也开发 无代码开发Windows Phone 7应用工具