如何在wpf中为标签设置绑定

时间:2011-08-11 19:42:04

标签: c# wpf xaml data-binding

我需要将属性绑定到标签。我写了以下代码:  标签的xaml是

<Label Canvas.Left="807.3" Canvas.Top="148.9" Height="33.567" x:Name="label2"
       Width="98" FontFamily="Tw Cen MT" FontSize="24" FontWeight="Bold"
       Foreground="#FFFEE3A4"
       Content="{Binding Path=UserInformation.AccountBalance,Mode=OneWay}">
    <Label.Background>
        <ImageBrush />
    </Label.Background>
</Label>

具有AccountBalance

的班级
public class CustomerInformation : INotifyPropertyChanged
    {
        public CustomerInformation()
        {
            _Balance = 0.0;
        }

        #region INotifyPropertyChanged Members
        public event PropertyChangedEventHandler PropertyChanged;
        #endregion

 public double AccountBalance
        {
            get { return _Balance; } 
        set 
        {
            _wepaBalance = value;
            FirePropertyChanged("AccountBalance");
        } 

        }

 protected void FirePropertyChanged(string propertyName)
        {
            if (this.PropertyChanged != null)
            {
                this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }
}

datacontext设置如下

this.LayoutRoot.DataContext = this;

在xaml.cs后面编写以下代码以访问UserInfo,这是一个全局对象

public CustomerInformation UserInformation
        {
            get
            {

                return Globalobjs._Object.UserInfo;
            }
        }

xamls.cs仅来自Window。

问题是INotifyPropertyChanged的PropertyChangedEventHandler在调用时始终为null。

任何1可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

this.LayoutRoot.DataContext = this; 

这是Window,但您将Window实例设置为DataContext。将DataContext设置为UserInformation

this.LayoutRoot.DataContext = Globalobjs._Object.UserInfo;

答案 1 :(得分:0)

您要绑定的datacontext是否实现了INotifyPropertyChanged?

如果这不是MVVM模式项目,请确保包含要绑定的属性的类实现该接口,并确保在更改属性时调用该事件的委托(例如OnPropertyChanged(“MyProperty”) “))

如果它是MVVM项目并且您没有使用框架,最好从实现INotifyPropertyChanged的ViewModel基础派生所有ViewModel。

答案 2 :(得分:0)

您正在绑定Windows的DataContext。但Windows DataContext与Windows后面的代码不同,后者在其中定义了UserInformation属性。要访问Window后面代码中定义的属性,必须设置Window的Name属性,然后使用以下绑定:

Content="{Binding ElementName=YourWindowName, Path=UserInformation.AccountBalance,Mode=OneWay}"