Browse Source

ControlLocator should work on logical tree.

pull/417/head
Steven Kirk 11 years ago
parent
commit
278f12e8d7
  1. 12
      src/Markup/Perspex.Markup/ControlLocator.cs

12
src/Markup/Perspex.Markup/ControlLocator.cs

@ -22,15 +22,15 @@ namespace Perspex.Markup
/// <param name="name">The name of the control to find.</param>
public static IObservable<IControl> Track(IControl relativeTo, string name)
{
var attached = Observable.FromEventPattern<VisualTreeAttachmentEventArgs>(
x => relativeTo.AttachedToVisualTree += x,
x => relativeTo.DetachedFromVisualTree += x)
var attached = Observable.FromEventPattern<LogicalTreeAttachmentEventArgs>(
x => relativeTo.AttachedToLogicalTree += x,
x => relativeTo.DetachedFromLogicalTree += x)
.Select(x => ((IControl)x.Sender).FindNameScope())
.StartWith(relativeTo.FindNameScope());
var detached = Observable.FromEventPattern<VisualTreeAttachmentEventArgs>(
x => relativeTo.DetachedFromVisualTree += x,
x => relativeTo.DetachedFromVisualTree += x)
var detached = Observable.FromEventPattern<LogicalTreeAttachmentEventArgs>(
x => relativeTo.DetachedFromLogicalTree += x,
x => relativeTo.DetachedFromLogicalTree += x)
.Select(x => (INameScope)null);
return attached.Merge(detached).Select(nameScope =>

Loading…
Cancel
Save