コード例 #1
0
ファイル: DataContextTests.cs プロジェクト: philstopford/Eto
        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);
            });
        }
コード例 #2
0
ファイル: DataContextTests.cs プロジェクト: philstopford/Eto
        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);
            });
        }
コード例 #3
0
ファイル: DataContextTests.cs プロジェクト: picoe/Eto
        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);
			});
		}
コード例 #4
0
 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;
 }