Пример #1
0
 private void UpdateDeep()
 {
     Children.Clear();
     if(Searchable)
     {
         searchTextBox = new System.Windows.Controls.TextBox
         {
             Text = ValuePattern
         };
         searchTextBox.TextChanged += SearchTextBox_TextChanged;
         Children.Add(searchTextBox);
     }
     var dictionary = KeyValuePair.GetValue(DataContext) as IDictionary;
     if (dictionary != null)
     {
         string[] unique_types = IDictionaryExtension.CollectUniqueStrings(dictionary, Key);
         Array.Sort(unique_types, (x, y) => String.Compare(x, y));
         foreach (var type in unique_types)
         {
             if (type.Contains(ValuePattern))
             {
                 var instances = IDictionaryExtension.DeepCollect<IDictionary>(dictionary,
                         new KeyValueFilter { Key = Key, Values = { type } }.Include);
                 if (instances.Count > 0)
                 {
                     var expander = new InstanceExpander
                     {
                         Key = Key,
                         ValuePattern = type,
                         DataContext = instances
                     };
                     expander.ListBox.SelectionChanged += ListBox_SelectionChanged;
                     Children.Add(expander);
                 }
             }
         }
     }
 }
Пример #2
0
 private void UpdateShallow()
 {
     Children.Clear();
     if (Searchable)
     {
         searchTextBox = new System.Windows.Controls.TextBox
         {
             Text = ValuePattern
         };
         searchTextBox.TextChanged += SearchTextBox_TextChanged;
         Children.Add(searchTextBox);
     }
     var dictionary = KeyValuePair.GetValue(DataContext) as IDictionary;
     if (dictionary != null)
     {
         var unique_types = new List<string>();
         foreach(var k in dictionary.Keys)
         {
             var d = dictionary[k] as IDictionary;
             if(d != null)
             {
                 if(d.Contains(Key))
                 {
                     var value = d[Key].ToString();
                     if(!unique_types.Contains(value))
                     {
                         unique_types.Add(value);
                     }
                 }
             }
         }
         foreach (var type in unique_types)
         {
             if (type.Contains(ValuePattern))
             {
                 var instances = IDictionaryExtension.Collect<IDictionary>(dictionary,
                         new KeyValueFilter { Key = Key, Values = { type } }.Include);
                 
                 if (instances.Count > 0)
                 {
                     var expander = new InstanceExpander
                     {
                         Key = Key,
                         ValuePattern = type,
                         DataContext = instances
                     };
                     expander.ListBox.SelectionChanged += ListBox_SelectionChanged;
                     Children.Add(expander);
                 }
             }
         }
     }
 }