有没有办法从 ListBox 以编程方式确定关联的 ObservableCollection?
我将 ItemsSource 绑定到我的 XAML 中的 ListBox 并且当用户从其中选择一个项目时,我希望程序不仅可以找到该项目来自哪个 ListBox(我已经设法做到了),而且还可以获取关联的 ObservableCollection用它。
我认为通过使用 sourceContainer.ItemsSource.ToString() (其中 sourceContainer 是通过编程找到的 ListBox),我将能够确定它背后的 DataBound ObservableCollection。然而,事实并非如此。我错过了什么?
谢谢!
编辑:这里有一些与 ObservableCollections 的创建以及我如何确定选择哪个框有关的代码。(我知道这可能不是最好的方法,我还在学习......)
首先,XAML(每个 ListBox 都有这一行用于常规绑定):
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?
如果还需要什么,请告诉我。