2015-07-19 90 views
0

我尝试学习WPF,我有基本绑定的问题,一开始我想在后面的代码中设置绑定。有谁知道我做错了什么?WPF简单绑定在代码后面

酒坊CS

public partial class BindInCodeBehind : Window, INotifyPropertyChanged 
{ 
    private string _myText; 

    public string MyText 
    { 
     get { return _myText; } 
     set 
     { 
      _myText = value; 
      OnPropertyChanged("MyText"); 
     } 
    } 

    public BindInCodeBehind() 
    { 
     InitializeComponent(); 

     var bind = new Binding(); 
     bind.Source = MyText; 
     bind.Path = new PropertyPath("Content"); 

     MyLabel.SetBinding(Label.ContentProperty, bind); 

     MyText = "New tekst"; 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 

    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) 
    { 
     PropertyChangedEventHandler handler = PropertyChanged; 
     if (handler != null) 
     { 
      handler(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 
} 

文件XAML

<Window x:Class="WpfBindingLearn.BindInCodeBehind" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="BindInCodeBehind" Height="300" Width="300"> 
    <Grid> 
     <Label Name="MyLabel" Content="Wait for binding"></Label> 
    </Grid> 
</Window> 

回答

2

Path是相对于当前绑定的源设置。您的来源(这是一个String)没有Content属性。您可以设置SourceWindowPathMyText

var bind = new Binding(); 
bind.Source = this; 
bind.Path = new PropertyPath("MyText");