public void Set_focus_on_empty_grid()
        {
            WpfTestHelper.WithWindow2(async w => {
                var grid  = new DataGrid2();
                w.Content = grid;
                await grid.WaitLoaded();

                Assert.IsFalse(grid.IsKeyboardFocusWithin);
                var point = grid.PointToScreen(new Point(3, 3));
                Mouse.MoveTo(new System.Drawing.Point((int)point.X, (int)point.Y));
                Mouse.Click(MouseButton.Left);
                await w.WaitIdle();
                Assert.IsTrue(grid.IsKeyboardFocusWithin);
            });
        }
 public void Do_not_reset_data_grid_focus()
 {
     WpfTestHelper.WithWindow2(async w => {
         var grid = new DataGrid2();
         grid.AutoGenerateColumns = false;
         grid.Columns.Add(new DataGridTextColumn {
             Binding = new Binding("Items")
         });
         w.Content        = grid;
         grid.ItemsSource = Enumerable.Range(1, 100).Select(i => Tuple.Create(i.ToString())).ToList();
         await grid.WaitLoaded();
         DataGridHelper.Focus(grid);
         grid.ItemsSource = Enumerable.Range(500, 100).Select(i => Tuple.Create(i.ToString())).ToList();
         await w.WaitIdle();
         Assert.IsTrue(grid.IsKeyboardFocusWithin);
         Assert.IsInstanceOf <DataGridCell>(Keyboard.FocusedElement);
     });
 }
        public void Searchable_column()
        {
            WpfTestHelper.WithWindow2(async w => {
                var model        = new SearchableModel();
                var grid         = new DataGrid2();
                grid.DataContext = model;
                BindingOperations.SetBinding(grid, DataGrid.ItemsSourceProperty, new Binding("Items.Value"));
                BindingOperations.SetBinding(grid, SearchableDataGridColumn.SearchTermProperty, new Binding("Term.Value"));
                grid.AutoGenerateColumns = false;
                grid.Columns.Add(new SearchableDataGridColumn {
                    Binding        = new Binding("Item1"),
                    HighlightStyle = new Style {
                        Setters =
                        {
                            new Setter(TextElement.BackgroundProperty, Brushes.Red)
                        }
                    }
                });
                w.Content = grid;
                await grid.WaitLoaded();
                await w.WaitIdle();

                model.Items.Value = Enumerable.Range(0, 49).Select(i => Tuple.Create(i.ToString())).ToList();
                await w.WaitIdle();

                model.Term.Value  = "5";
                model.Items.Value = Enumerable.Range(50, 100).Select(i => Tuple.Create(i.ToString())).ToList();
                await w.WaitIdle();

                var row  = grid.Descendants <DataGridRow>().First(r => ((Tuple <String>)r.DataContext).Item1 == "50");
                var text = row.Descendants <TextBlock>().First();
                Assert.AreEqual("50", text.Text);
                var inlines = text.Inlines.OfType <Run>().ToArray();
                Assert.AreEqual("5", inlines[0].Text);
                Assert.AreEqual("0", inlines[1].Text);
            });
        }