public override int GetHashCode()
{
- return ObjectInfo.GetHashCode();
+ return ObjectInfo == null
+ ? (Uri == null ? DisplayName.GetHashCode() : Uri.GetHashCode())
+ : ObjectInfo.GetHashCode();
}
public override bool Equals(object obj)
//Initially, all nodes are checked
//We need to *uncheck* the nodes that are not selected
- var selects = from DirectoryRecord rootRecord in RootNodes
+ var allNodes = (from DirectoryRecord rootRecord in RootNodes
+ from DirectoryRecord record in rootRecord
+ select record).ToList();
+
+ var selects = (from DirectoryRecord rootRecord in RootNodes
from DirectoryRecord record in rootRecord
where record.Uri !=null && !selections.Contains(record.Uri.ToString())
- select record;
+ select record).ToList();
+ var shouldBeChecked = allNodes.Except(selects).ToList();
selects.Apply(record=>record.IsChecked=false);
+
+ shouldBeChecked.Apply(record => record.IsChecked = true);
+
+
+
}
protected string AccountName { get; set; }