绑定财产

时间:2010-09-21 13:03:06

标签: .net wpf binding properties

我有一个对象(类):Foo

它有一个属性:Bar

我该怎样做才能绑定到'Bar'属性?

(WPF,.NET 4)

编辑:

为了更明确,我举了一个例子:

我有Dot:UserControl

我创建了Dot - CenterX和CenterY的2个属性:

    public double CenterX
    {
        get
        {
            return Canvas.GetLeft(this) + this.Width / 2;
        }
        set
        {
            Canvas.SetLeft(this, value - this.Width / 2);
        }
    }

    public double CenterY
    {
        get
        {
            return Canvas.GetTop(this) + this.Height / 2;
        }
        set
        {
            Canvas.SetLeft(this, value - this.Height / 2);
        }
    }

现在:

<Line Stroke="Black" x:Name="line1"
      X1="{Binding ElementName=dot1, Path=CenterX}"
      Y1="{Binding ElementName=dot1, Path=CenterY}"

      X2="{Binding ElementName=dot2, Path=CenterX}"
      Y2="{Binding ElementName=dot2, Path=CenterY}" />

不起作用......

2 个答案:

答案 0 :(得分:1)

将INotifyPropertyChanged实现到您的类,以便WPF绑定框架知道在更改属性时更新相关的绑定控件。

对于实际绑定,您可能会发现这个有用的

http://japikse.blogspot.com/2009/07/inotifypropertychanged-and-wpf.html

使用INotifyPropertyChanged,您的课程将类似于

 public class Foo:INotifyPropertyChanged
    {
        public double CenterX
        {
            get
            {
                return Canvas.GetLeft(this) + this.Width / 2;
            }
            set
            {
                Canvas.SetLeft(this, value - this.Width / 2);
                OnPropertyChanged("CenterX");
            }
        }

        public event PropertyChangedEventHandler PropertyChanged = delegate { };

        private void OnPropertyChanged(string propertyName)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }

随时更改CenterX值,OnPropertyChanged(“CenterX”);将告诉UI刷新具有绑定属性的控件

答案 1 :(得分:0)

您的问题不够精确,无法完全回答......除非另有说明,否则绑定路径始终相对于控件的DataContext。假设您的DataContextFoo的实例,您可以这样做:

<TextBlock Text="{Binding Bar}" />

或者如果你想更明确:

<TextBlock Text="{Binding Path=Bar}" />

现在,如果Foo本身是当前DataContext的属性,则可以这样做:

<TextBlock Text="{Binding Foo.Bar}" />

看看这个Binding Cheat Sheet,当你刚接触WPF绑定时它非常有用