我是新來的WPF,並有問題綁定數據到一個簡單的列表框。我已經設定,在MainWindow.XAMLWPF列表框綁定沒有顯示
<ListBox Name="lbxShows" />
然後在後面的代碼,我設置ItemsSource屬性被稱爲ShowList顯示對象的一個ObservableCollection。這實際上是另一個類(Oasis)的一個屬性,其中OasisInst是一個實例(在MainApplication的構造函數中設置)。
InitializeComponent();
mainApp = new MainApplication();
lbxShows.ItemsSource = mainApp.OasisInst.ShowList;
此時,ShowList中沒有項目,但稍後有些項目會被添加並且它們不會出現在ListBox中。
Oasis類的代碼實現INotifyPropertyChanged接口,然後具有從ShowList設置器調用的教科書方法。
private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
PropertyChanged是我的PropertyChangedEventHandler事件。
當我在調試模式下通過時,PropertyChanged爲null,所以似乎沒有訂閱我的事件。鑑於這通常會通過綁定自動發生(我認爲?),那麼我猜測綁定沒有正確設置。
也許單獨設置ItemsSource屬性不足以設置綁定?
_「Oasis類的代碼實現INotifyPropertyChanged接口」_ - 只要您不更改「ShowList」屬性的值,這是無關緊要的。如果您要更改'ShowList'屬性的值,即創建一個全新的集合並將屬性值設置爲引用該集合,那麼僅僅實現該接口是不夠的。你需要將屬性綁定到目標'ItemsSource'屬性,而不是僅僅設置它。通常,這將在XAML中完成,但如果您堅持,也可以在代碼隱藏方面執行。 –
你的問題是不應答的,因爲如果沒有好的[mcve],就無法確切知道代碼不起作用的原因。請解決你的問題。 –