爲什麼點擊按鈕後文本塊中的文本不會改變?WPF - 綁定問題
XAML:
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Text="{Binding Name}"/>
<Button Click="Button_Click" Grid.Row="1" Margin="20">Click Me</Button>
</Grid>
後面的代碼:
public partial class Window1 : Window, INotifyPropertyChanged
{
private Person _myPerson;
public Person MyPerson
{
get { return _myPerson; }
set
{
_myPerson = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("MyPerson"));
}
}
}
public Window1()
{
MyPerson = new Person { Name = "A" };
DataContext = MyPerson;
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
MyPerson = new Person { Name = "B" };
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
#endregion
}
不會更改點擊上的datacontext會對性能產生影響嗎?不應該使用相同的數據上下文對象。也許將其作爲類成員並在Person類上實現INotifyPropertyChanged以通知「Name」成員上的更改。然後,而不是說MyPerson =新人{名稱=「B」};如果讓Person對象的類成員爲mPerson那麼說,mPerson.Name =「B」。 – whoisthis 2010-12-21 10:43:34
嗯,我在答覆中提到過。但OP沒有就此回覆。我仍然建議親自實施'INotifyPropertyChanged'並更改它的'Name'屬性,而不是創建一個全新的'Person'對象。 – decyclone 2010-12-21 10:49:38
謝謝!澄清 – whoisthis 2010-12-21 11:30:23