リストボックスからプログラムで関連するObservableCollectionを決定する方法はありますか?
ItemsSourceをXAMLのListBoxにバインドし、ユーザーがその中からアイテムを選択したときに、そのアイテムがどのListBoxからのものであるか(私が管理した)だけでなく、ObservableCollectionを関連付けて取得するようにプログラムに指示します。それと。
sourceContainer.ItemsSource.ToString()(sourceContainerはプログラムで検出されたListBox)を使用することで、その背後にあるDataBoundObservableCollectionを判別できると思いました。ただし、そうではありません。私は何が欠けていますか?
ありがとう!
編集: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?
他に何か必要なことがあれば、私に知らせてください。