有沒有一種方法可以從ListBox以編程方式確定關聯的ObservableCollection?從列表框中獲取ObservableCollection
我將ItemsSource綁定到我的XAML中的ListBox,並且當用戶從中選擇一個項目時,我希望程序不僅能夠找到該項目來自哪個ListBox(我已經設法完成),而且還要獲取與其關聯的ObservableCollection。我認爲通過使用sourceContainer.ItemsSource.ToString()(其中sourceContainer是以編程方式發現的列表框),我將能夠確定它後面的DataBound ObservableCollection。但是,情況並非如此。我錯過了什麼?
謝謝!
編輯:這裏有一些關於創建ObservableCollections的代碼,以及我如何確定選擇哪個框。 (我知道這可能不是最好的方式,我還在學習...)
首先,在XAML(每個列表框有這一行一般綁定):
ItemsSource="{Binding Path=ListOneItems}"
現在用於創建ObservableCollections代碼:
private ObservableCollection<DataItem> listOneItems;
public ObservableCollection<DataItem> ListOneItems
{
get
{
if (listOneItems == null)
{
listOneItems = new ObservableCollection<DataItem>();
}
return listOneItems;
}
}
在此處,程序確定選定的項目的父:
//Finds the name of the container that holds the selected SLBI (similar to finding the initial touched object)
FrameworkElement determineSource = e.OriginalSource as FrameworkElement;
SurfaceListBox sourceContainer = null;
while (sourceContainer == null && determineSource != null)
{
if ((sourceContainer = determineSource as SurfaceListBox) == null)
{
determineSource = VisualTreeHelper.GetParent(determineSource) as FrameworkElement;
}
}
//Name of the parent container
strParentContainer = sourceContainer.Name;
//Name of the ObservableCollection associated with parent container?
如果需要其他東西,請告訴我。
假設你不太明白做什麼你需要。如果訂閱了已更改的列表框選擇,則可以從發件人對象獲取列表框。 var listbox =(ListBox)sender;並得到listbox.ItemsSource獲取相關的集合 – Artiom 2012-07-16 15:48:12