サンプルデータ
UK
-london
-london 1
-london --
-london 100
-Newcastle
-Newcastle 1
-Newcastle 2
-Newcastle 3
-liverpool
USA
-New york
-califonia
China
-one
-two
上記のサンプル構造を持つ radTreeListView があります。radTreeListView 内の選択可能なすべての項目には、ユーザーがチェックボックスをオンまたはオフにして項目を選択または選択解除できるチェックボックスがあります。
私の要件は、ユーザーが同じ rootItem/Parent の下にある項目のみを選択できるようにすることです。
ユーザーは、UK の下で項目を選択してから、USA または中国の下で別の項目を選択できないようにする必要があります。
ただし、英国、ロンドン 1、ニューカッスル 3、リバプールを選択できます。
私は基本的に、行われたすべての選択が同じ rootParent を持つことを確認したいと考えています。
そして、これは選択されたアイテムを取得する方法です
private void radTreeListView_SelectionChanged(object sender, SelectionChangeEventArgs e)
{
//Limit number of items that can be selected from the radTreeListView
if (totalSelectedItems() > 3 && e.AddedItems.Count > 0)
{
radTreeListView.Unselect(e.AddedItems);
radTreeListView.Rebind();
}
//Retrieve items selected from the radTreeListView
System.Collections.ObjectModel.ObservableCollection<object> selectedItems = radTreeListView.SelectedItems;
StringBuilder userSelection = new StringBuilder();
const string seperator = ", ";
foreach (object item in selectedItems)
{
myDataclass myItems = (myDataclass)item;
userSelection.Append(myItems.Name).Append(seperator);
}
}
以下のコードを試しましたが、親が null を返しました
object parent = radTreeListView.ItemContainerGenerator.ContainerFromItem(radTreeListView.SelectedItem);