2013-05-19 47 views
1

以下this示例(示例2)數據綁定的工作原理和UI基於ArtistName的值進行更新。爲什麼ToString不能使用數據綁定

如果XAML綁定是這樣寫的:

<Label Grid.Column="1" Grid.Row="1" Content="{Binding}" /> 

,而不是

<Label Grid.Column="1" Grid.Row="1" Content="{Binding ArtistName}" /> 

然後調用toString呼籲SongViewModel,即使我重寫這樣的:

public override String ToString() 
{ 
    return Song.ArtistName; 
} 

該值不通過DataBinding更新。其餘代碼與鏈接中給出的示例相同。

爲什麼在這種情況下不值更改?

+0

你需要實現'INotifyPropertyChanged'。 –

+0

它已經實現了,這就是爲什麼'

+1

對,這是因爲它並不是說屬性與名稱「whateverNameC#HasAssignedToThatBinding」尚未更新,因爲您尚未調用該事件。 –

回答

2

WPF綁定不起作用。

如果您{Binding}那麼WPF刷新該綁定的唯一方法是重置DataContext。該綁定沒有PropertyPath,因此不能調用INotifyPropertyChanged來刷新那種綁定。

+2

換句話說,假設_DataContext_設置爲* SongViewModel *,則使用'{Binding Path = ArtistName}'。 –

相關問題