绑定静态变量

时间:2015-07-12 15:49:05

标签: wpf binding

我有这个型号:

class Person
{
    public static int Counter;
    public string _firstName;
    public string _lastName;

   public string FirstName
   {
        get {return _firstname; }
        set
        {
            _fileName = value;               
        }
   }

   public AddPerson(Person person)
   {
       Counter++;
   }
}

现在我尝试将我的计数器property绑定到简单的TextBlock

<TextBlock Name="tbStatusBar" Text="{Binding Person,Source={StaticResource Person.Counter}}" />

并且出现了这个错误:追索者Person.Counter无法解决。

1 个答案:

答案 0 :(得分:-1)

绑定需要属性而不是字段。将Counter更改为属性并直接绑定到该属性,例如

Text="{Binding Counter}"

在Xaml中绑定需要视觉或逻辑树上的项目实际绑定。见Trees in WPF。静态属性Counter存在但不在绑定可以找到它的位置。

因此,要么在页面的资源上创建一个Person对象(您可能需要将Person类设置为public,以便命名空间解析可以找到它),例如:

<local:Person x:Key="myPerson"/>

并绑定到它,如

<TextBlock Text="{Binding Count}"
           DataContext="{Binding Source={StaticResource myPerson}}">

或者,如果TextBlock的数据上下文可以访问其中一个,例如一个名为'Persons'的有效(非空)Person对象列表(对于此示例),如下所示:

<TextBlock DataContext="{Binding Persons[0]}" Text="{Binding Counter}"/>