the Code below is Bound to IsExpanded of RadTreeItem
public
bool
IsExpanded
{
get
{
return
isExpanded;
}
set
{
try
{
if
(isExpanded != value)
{
if
(value)
{
if
(Children.Contains(dummy))
{
Children.Remove(dummy);
}
LoadChildren();
}
}
isExpanded = value;
RaisePropertyChanged(() => IsExpanded);
}
catch
(Exception e)
{
if
(!HasItems)
{
//if empty, add dummy to keep the expander.
Children.Add(dummy);
}
//any exception will keep this node collapsed.
isExpanded =
false
;
RaisePropertyChanged(() => IsExpanded);
throw
;
}
}
}
Inside the catch statement, I want to force collapse the treeitem if there is an error. If I put "throw" the tree item DOES NOT collapse. when I remove the "throw" it collapses successfully. Why "throw" is preventing the treeitem to collapse?
We need the "throw" because IsExpanded is called by another method that catches the exception and do some logic.