C# WPF:KeyValuePair的树状视图<;int,string>;

C# WPF:KeyValuePair的树状视图<;int,string>;,c#,wpf,mvvm,C#,Wpf,Mvvm,我有一个带有treeview控件的WPF应用程序。当我实现这个方法来解析字符串时,我可以找到一个树视图。 现在我想为每个路径分配id,例如“NetworkControl.AlternateIndexText.Value”,将有自己的id和“NetworkControl.AddressData.MessageOriginatorID.Value”, 将有另一个与之关联的id 这里我有一个KeyValuePair的列表。我想做的是解析字符串并创建一个具有关联Id的树节点 public L

我有一个带有treeview控件的WPF应用程序。当我实现这个方法来解析字符串时,我可以找到一个树视图。 现在我想为每个路径分配id,例如“NetworkControl.AlternateIndexText.Value”,将有自己的id和“NetworkControl.AddressData.MessageOriginatorID.Value”, 将有另一个与之关联的id

这里我有一个KeyValuePair的列表。我想做的是解析字符串并创建一个具有关联Id的树节点

      public List<MessageElement> GetRequestTreeNodes()
      {
        var nodes = new List<KeyValuePair<int, string>>();

        nodes.Add(new KeyValuePair<int, string>(1, "NetworkControl.AlternateIndexText.Value"));
        nodes.Add(new KeyValuePair<int, string>(1, "NetworkControl.AddressData.DestinationID"));
        nodes.Add(new KeyValuePair<int, string>(1, "NetworkControl.AddressData.MessageOriginatorID.Value"));

     }
公共列表GetRequestTreeNodes()
{
var节点=新列表();
添加(新的KeyValuePair(1,“NetworkControl.alternateIndextextext.Value”);
添加(新的KeyValuePair(1,“NetworkControl.AddressData.DestinationID”);
添加(新的KeyValuePair(1,“NetworkControl.AddressData.MessageOriginatorID.Value”);
}
这里是我解析字符串和Id的地方。我可以用名称创建节点,但如何传递Id以便识别每个路径

     public List<MessageElement> BuildTree(List<KeyValuePair<int, string>>   strings)
    {
        return (
          from s in strings
          let split = s.Value.Split('.')
          group s by s.Value.Split('.')[0] into g

          select new MessageElement
          {
              ID = ?
              Name = g.Key,
              Children = BuildTree(
                from s in g
                where s.Value.Length > g.Key.Length + 1
                select s.Value.Substring(g.Key.Length + 1))
          }
          ).ToList();

      }


        public List<MessageElement> GetRequestTreeNodes()
      {
        var nodes = new List<KeyValuePair<int, string>>();

        nodes.Add(new KeyValuePair<int, string>(1,  "NetworkControl.AlternateIndexText.Value"));
        nodes.Add(new KeyValuePair<int, string>(1, "NetworkControl.AddressData.DestinationID"));
        nodes.Add(new KeyValuePair<int, string>(1, "NetworkControl.AddressData.MessageOriginatorID.Value"));

     }
公共列表构建树(列表字符串)
{
返回(
从字符串中的
设split=s.Value.split('.'))
按s.Value对s进行分组。将('.')[0]拆分为g
选择newmessageelement
{
ID=?
名称=g.键,
Children=BuildTree(
从s到g
其中s.Value.Length>g.Key.Length+1
选择s.Value.Substring(g.Key.Length+1))
}
).ToList();
}
公共列表GetRequestTreeNodes()
{
var节点=新列表();
添加(新的KeyValuePair(1,“NetworkControl.alternateIndextextext.Value”);
添加(新的KeyValuePair(1,“NetworkControl.AddressData.DestinationID”);
添加(新的KeyValuePair(1,“NetworkControl.AddressData.MessageOriginatorID.Value”);
}
有人能帮我吗? 我不想找任何借口,但我对林克和WPF都是新手
谢谢大家的帮助

ID是
密钥对中的密钥吗?
ID=s.Key
有效吗?@ColinThomsen这对我不起作用。我开始用另一种方式来处理这个问题。我把我的问题贴在这里: