public void DataContextInNativeControlShouldBeSet() { int dataContextChanged = 0; Shown(form => { var c = new Panel(); c.DataContextChanged += (sender, e) => dataContextChanged++; var expander = new CustomExpander { Content = c }; var content = new Panel { Content = expander }; Assert.AreEqual(0, dataContextChanged); // embed the expander natively, so it is 'disconnected' from eto var holder = new Panel(); var holderWpf = holder.ToNative() as System.Windows.Controls.Decorator; holderWpf.Child = content.ToNative(true); form.Content = holder; content.DataContext = new MyViewModel(); Assert.AreEqual(1, dataContextChanged); }, () => { Assert.AreEqual(1, dataContextChanged); }); }
public void DataContextChangedShouldFireForThemedControl() { int dataContextChanged = 0; MyViewModel dataContext = null; Panel c = null; Shown(form => { c = new Panel(); c.DataContextChanged += (sender, e) => dataContextChanged++; var expander = new CustomExpander(); expander.Content = c; form.Content = expander; form.DataContext = dataContext = new MyViewModel(); Assert.AreEqual(1, dataContextChanged); Assert.IsInstanceOf <MyViewModel>(c.DataContext); Assert.IsInstanceOf <MyViewModel>(form.DataContext); Assert.AreSame(dataContext, c.DataContext); Assert.AreSame(dataContext, form.DataContext); Assert.AreSame(dataContext, form.Content.DataContext); return(form); }, form => { Assert.AreEqual(1, dataContextChanged); Assert.IsInstanceOf <MyViewModel>(c?.DataContext); Assert.IsInstanceOf <MyViewModel>(form.DataContext); Assert.AreSame(dataContext, c.DataContext); Assert.AreSame(dataContext, form.DataContext); Assert.AreSame(dataContext, form.Content.DataContext); }); }
public SearchResult(int rank, string type, string compact, string full, CustomExpander control) { this.Rank = rank; this.Type = type; this.Compact = compact; this.Full = full; this.Control = control; }