数据将静态类的字符串变量绑定到Phone 7中的textBlock?

sho*_*ayb 3 c# data-binding silverlight windows-phone-7

这是C#代码

public static class Global
{
    public static string Temp 
    { 
        get 
        {
            return temp;
        }
        set
        {
            temp = value;
        }
    }

    public static string temp="100";

}
Run Code Online (Sandbox Code Playgroud)

这是MainPage的xaml代码

 <TextBlock Text="{Binding Path=Temp}" Grid.Column="1" Margin="34,47,32,49" Name="textBlockCheck" />
Run Code Online (Sandbox Code Playgroud)

我在它的构造函数中声明了MainPage.cs中的datacontext:

this.DataContext= Global.Temp;
Run Code Online (Sandbox Code Playgroud)

但是textBlock中没有显示任何内容.在此先感谢您的帮助.

Mat*_*cey 9

您无法绑定到静态类,因为绑定需要对象实例.

但是,您可以绑定到类的静态属性.
如果您更改Global为不是静态但将其所有属性保留为静态,则可以使用以下技术.

假设:

namespace StaticBinding
{
    public class MyStaticClass
    {
        private static string myStaticProperty = "my static text";

        public static string MyStaticProperty
        {
            get { return myStaticProperty; }
            set { myStaticProperty = value; }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,如果您定义以下应用程序资源:

.. xmlns:myns="clr-namespace:StaticBinding"

<Application.Resources>
    <myns:MyStaticClass x:Key="MyStaticClassResource" />
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)

然后在您的页面中,您只需执行以下操作:

<TextBlock Text="{Binding Path=MyStaticProperty, 
                  Source={StaticResource MyStaticClassResource}}" />
Run Code Online (Sandbox Code Playgroud)

这甚至会给你智能感知Path.

这允许您绑定到"全局"静态变量,并使datacontext保持空闲,只包含您希望绑定的任何模型.