2016-05-12 43 views
1

我在WPF中有一個TextBox屬性綁定到Modend = TwoWay的字符串「EmployeeSource.ID」。我的問題是,當我更改EmployeeSource對象,綁定不起作用。我的方法有什麼問題?當綁定對象更改時刷新視圖

XAML

<TextBox x:Name="NameTextBox" Margin="5,5,10,5" TextWrapping="Wrap" 
Text="{Binding SelectedEmployee.Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
Grid.Row="1" Grid.Column="1" /> 

代碼隱藏

private Employee _selectedEmployee; 

public Employee SelectedEmployee 
{ 
    get { return _selectedEmployee; } 
    set 
    { 
     _selectedEmployee = value; 
     UpdateTextBoxes(); 
    } 
} 

private void UpdateTextBoxes() 
{ 
    NameTextBox.Text = SelectedEmployee?.Name; 
} 
+0

你的對象/屬性沒有實現INotifyPropertyChanged接口。它需要被執行來與綁定一起工作。請參閱:http://stackoverflow.com/questions/8186864/xaml-binding-from-a-string-to-textbox-not-working – pKami

回答

0

請嘗試以下的代碼。您需要實現INotifyPropertyChanged接口以實現WPF中的數據綁定。這是WPF數據綁定和MVVM模式的基本概念。這應該適合你。背後

代碼:

public class YourClassName : INotifyPropertyChanged 
{ 
    // These fields hold the values for the public properties. 
    private Employee _selectedEmployee; 

    public event PropertyChangedEventHandler PropertyChanged; 

    private void NotifyPropertyChanged(String info) 
    { 
     if (PropertyChanged != null) 
     { 
      PropertyChanged(this, new PropertyChangedEventArgs(info)); 
     } 
    } 

    // The constructor is private to enforce the factory pattern. 
    private YourClassName() 
    { 
     _selectedEmployee = new Employee(); 
    } 

    public Employee selectedEmployee 
    { 
     get 
     { 
      return this._selectedEmployee; 
     } 
     set 
     { 
      if (value != this._selectedEmployee) 
      { 
       this._selectedEmployee = value; 
       NotifyPropertyChanged("selectedEmployee"); 
      } 
     } 
    } 
} 

XAML:

<TextBox x:Name="NameTextBox" Margin="5,5,10,5" TextWrapping="Wrap" 
Text="{Binding selectedEmployee.Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
Grid.Row="1" Grid.Column="1" /> 
相關問題