0

チェックボックス付きのツリービューがあり、ツリービューの子ノードの子ノードにアクセスしたい。

これは私がツリービューを作成した方法です。データベースに挿入できるように、レベル4アイテムのチェックにアクセスして値のチェックを外したいです。

  private void FillingTreeDynamic()
    {
        Nodes.Clear();
        var data = dbobj.GetDataFromDataBase("", "Select * from Master");
        foreach (DataRowView dr in data)
        {
            var level_1_items = new Node() { Text = dr["MasterName"].ToString(),IsChecked=false};
            var details = dbobj.GetDataFromDataBase("", "Select * from Details where MasterID='"+Convert.ToInt32(dr["ID"].ToString())+"'");
            foreach(DataRowView row in details)
            {
                var level_2_items = new Node() { Text = row["SubName"].ToString(),IsChecked=false};
                level_2_items.Parent.Add(level_1_items);
                level_1_items.Children.Add(level_2_items);
                var level_3_items = new Node() { Text ="View",IsChecked=false };
                level_3_items.Parent.Add(level_2_items);
                level_2_items.Children.Add(level_3_items);
                var dataView = dbobj.GetDataFromDataBase("","select * from ViewDetails");
                foreach (DataRowView rowview in dataView)
                {
                    var level_4_items = new Node() {Text=rowview["RightsName"].ToString(), IsChecked = false };
                    level_4_items.Parent.Add(level_3_items);
                    level_3_items.Children.Add(level_4_items);
                }

            }           

            Nodes.Add(level_1_items);
        }
        treeView.ItemsSource = Nodes;

    }

以下に示すように、子ノードとその値にアクセスできます。

 public ObservableCollection<Node> Nodes { get; private set; } 
 foreach (var parent in Nodes)
 {
  if (parent.IsChecked == true)
    {
      foreach (var item in parent.Children)
        {
           if (item.IsChecked == true)
               {
               }
           else
             {
             } 
       }
else
  {
  }     
 }
 }

子ノードの親にアクセスするにはどうすればよいですか。これらの子ノードにアクセスする方法はありますか。前もって感謝します。

4

1 に答える 1