public SignatureTreeViewModel(TreeViewModelBase parent, SignatureTreeItem value) : base(parent) { if (value == null) throw new ArgumentNullException(nameof(value)); _children = new ObservableCollectionEx<TreeViewModelBase>(); _readonlyChildren = new ReadOnlyObservableCollection<TreeViewModelBase>(_children); this.Value = value; }
public SignatureTreeViewItem(SignatureTreeItem value) : base() { if (value == null) throw new ArgumentNullException("value"); base.ItemsSource = _listViewItemCollection; base.Header = _header; base.IsExpanded = true; base.RequestBringIntoView += (object sender, RequestBringIntoViewEventArgs e) => { e.Handled = true; }; this.Value = value; }
private SignatureTreeItem GetSignatureTreeViewItem(string leaderSignature) { var signatureTreeItems = new List<SignatureTreeItem>(); var workSignatureTreeItems = new List<SignatureTreeItem>(); var checkedSignatures = new HashSet<string>(); var workCheckedSignatures = new HashSet<string>(); { LinkItem leaderLinkItem; if (!_cache_LinkItems.TryGetValue(leaderSignature, out leaderLinkItem)) return null; signatureTreeItems.Add(new SignatureTreeItem(leaderLinkItem)); checkedSignatures.Add(leaderSignature); } { int index = 0; for (;;) { for (; index < signatureTreeItems.Count && index < 32 * 1024; index++) { var sortedList = signatureTreeItems[index].LinkItem.TrustSignatures.ToList(); sortedList.Sort(); foreach (var trustSignature in sortedList) { if (checkedSignatures.Contains(trustSignature)) continue; LinkItem tempLinkItem; if (!_cache_LinkItems.TryGetValue(trustSignature, out tempLinkItem)) continue; var tempTreeItem = new SignatureTreeItem(tempLinkItem); signatureTreeItems[index].Children.Add(tempTreeItem); workSignatureTreeItems.Add(tempTreeItem); workCheckedSignatures.Add(trustSignature); } } if (workSignatureTreeItems.Count == 0) break; signatureTreeItems.AddRange(workSignatureTreeItems); workSignatureTreeItems.Clear(); checkedSignatures.UnionWith(workCheckedSignatures); workCheckedSignatures.Clear(); } } return signatureTreeItems[0]; }