起初我想說下面的示例是過分簡化的。 假設你已經綁定了WPF控件。INotifyPropertyChanged問題
<Window Title="Window1" Height="300" Width="300">
<Grid>
<StackPanel>
<TextBox Text="{Binding Name}" Margin="10"/>
<Button HorizontalAlignment="Center"
Content="Click Me" Margin="5"
Padding="2" Click="OnButtonClick" />
</StackPanel>
</Grid>
</Window>
窗口被綁定到其實現INotifyPropertyChanged
並且具有名稱設定器在形式
public string Name
{
get { return _name; }
set
{
_name = "Some Name";
OnPropertyChanged("Name");
}
}
即Person類每當用戶嘗試從UI更改時,_name都會分配「某個名稱」。 但這個示例不起作用。我將TextBox中的名稱更改爲某個值按Tab鍵強制焦點移動到Button,並且TextBox中的值保持不變,但PropertyChanged事件已觸發。
請你解釋一下爲什麼會發生?據我所知PropertyChanged
事件迫使用戶界面重新讀取屬性的值並顯示它們,但在我的示例中,數據綁定文本框中的值未更新。
再次。我明白,這是財產執行不力,但我想重申,這是過於簡單化。 這只是一個例子。 但無論如何,PropertyChanged表示屬性發生了變化,應該更新,但事實並非如此。
犯錯,我可能是錯的,但它不應該是`{綁定路徑=名稱}`? – 2009-01-26 18:27:26
不是。對於屬性綁定,可以省略Path作爲快捷方式。 – 2009-01-26 18:28:57
這是因爲綁定具有將路徑作爲參數的構造函數。 – 2009-01-26 18:31:08