这是C#代码
public static class Global
{
public static string Temp
{
get
{
return temp;
}
set
{
temp = value;
}
}
public static string temp="100";
}
这是MainPage的xaml代码
<TextBlock Text="{Binding Path=Temp}" Grid.Column="1" Margin="34,47,32,49" Name="textBlockCheck" />
我已在MainPage.cs中在其构造函数中声明了datacontext:
this.DataContext= Global.Temp;
但是textBlock中没有显示任何内容。在此先感谢您的帮助。
答案 0 :(得分:9)
您无法绑定到静态类,因为绑定需要对象实例。
但是,您可以绑定到类的静态属性
如果您将Global
更改为不是静态但将其所有属性保留为静态,则可以使用以下技术。
假设:
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>
<myns:MyStaticClass x:Key="MyStaticClassResource" />
</Application.Resources>
然后在您的页面中,您只需执行以下操作:
<TextBlock Text="{Binding Path=MyStaticProperty,
Source={StaticResource MyStaticClassResource}}" />
这甚至可以让你在Path
上进行智能感知。
这允许您绑定到“全局”静态变量,并使datacontext保持空闲,只包含您希望绑定的任何模型。
答案 1 :(得分:0)
我认为不支持绑定到静态属性
尝试使类单例并绑定到实例
这可能会有所帮助:
http://social.msdn.microsoft.com/Forums/en-IE/wpf/thread/257a41be-8168-401c-a915-cdc44e195a3f
答案 2 :(得分:0)
我想,那
this.Text = Global.Temp
答案 3 :(得分:0)
您可以使用:<TextBlock Text="{Binding Path=.}" />
或<TextBlock Text="{Binding}" />
答案 4 :(得分:0)
感谢大家的帮助,问题解决了。实际上你创建了一个简单的类L
public partial class App : Application
{
//--------------My Class
private static MyClass _class = null;
public static MyClass _Class
{
get
{
if (_class == null)
_class = new MyClass();
return _class;
}
}
并在要绑定的页面中,在.cs文件的类构造函数
中执行此操作DataContext = App._Class;
最后在.xaml版本的文件中将此文件写入bind
<TextBlock Text="{Binding value}" Name="textBlockCheck" />
其中
Binding中的值
实际上是MyClass类的属性。 :)
谢谢大家!