0
我真的不明白爲什麼以及在後臺發生了什麼,所以請幫助我。 我有一個簡單的ListView:ObservableCollection綁定到列表視圖
<ListView Height="100" HorizontalAlignment="Left" Margin="67,84,0,0" ItemsSource="
{Binding Path=ListBinding}" Name="listView1" VerticalAlignment="Top" Width="351" />
和按鈕:
<Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="162,41,0,0"
Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
我在DataContext設置爲我的 「視圖模型」 類:
InitializeComponent();
this.DataContext = new VM1();
現在,如果我初始化在VM1的構造函數obscollection中,綁定起作用,當我使用button1_click函數填充ListBinding時:
private void button1_Click(object sender, RoutedEventArgs e)
{
(this.DataContext as VM1).Do();
}
public VM1()
{
ListBinding = new ObservableCollection<string>();
}
public void Do()
{
ListBinding.Add("VM1 works 1");
ListBinding.Add("VM1 works 2");
}
但是,如果我在DO()函數初始化它,它不:
public VM1()
{ }
public void Do()
{
ListBinding = new ObservableCollection<string>();
ListBinding.Add("VM1 NOT works 1");
ListBinding.Add("VM1 NOT works 2");
}
我想這個問題的答案可能是一個襯墊,和我想了解「爲什麼」。 謝謝!
嗨,ListBinding很簡單:公衆的ObservableCollection ListBinding {獲得;組; }當在構造函數中初始化此屬性,然後在Do()函數中添加內容時,綁定工程(列表視圖得到更新),但在Do()函數中初始化時也無法更新...: –
user1519074
2012-07-12 05:38:59
就像我說的,需要調用NotifyOfPropertyChange: – jbiddle 2012-07-12 16:12:02
好吧,我明白這一點,謝謝,所以這是正確的方式來做到這一點。但是在這種情況下,問題是,爲什麼綁定在沒有這種setter的情況下工作,如果我在構造函數中初始化它? – user1519074 2012-07-12 17:07:38