2017-09-22 3 views
0

Was ich:WinApplicationDriver erhalten Reihen von Datagrid

namespace DataGrid 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
      DataContext = new ViewModelDataGrid(); 
     } 
    } 

    public class ViewModelDataGrid 
    { 
     public ObservableCollection<string> Items { get; set; } 

     public ViewModelDataGrid() 
     { 
      Items = new ObservableCollection<string>(); 

      for (int i = 0; i < 1000; i++) 
      { 
       Items.Add(i.ToString()); 
      } 
     } 

    } 
} 

XAML

<Grid> 
     <DataGrid ItemsSource="{Binding Items}"> 
      <DataGrid.Columns> 
       <DataGridTextColumn Header="Line No" Binding="{Binding .}" IsReadOnly="True"/> 
      </DataGrid.Columns> 
     </DataGrid> 
    </Grid> 

Waht Ich versuche zu tun:

DesiredCapabilities appDataGridCapabilities = new DesiredCapabilities(); 
appDataGridCapabilities.SetCapability("app", @"C:\Users\a\Documents\visual studio 2015\Projects\DataGrid\DataGrid\bin\Debug\DataGrid.exe"); 
appDataGridCapabilities.SetCapability("deviceName", "WPF"); 
var dataGridSession = new WindowsDriver<WindowsElement>(new Uri(@"http://127.0.0.1:4723"), appDataGridCapabilities); 
dataGridSession.Manage().Window.Position = new System.Drawing.Point(0, 0); 
var elements = dataGridSession.FindElementByClassName("DataGrid").FindElementsByClassName("DataGridRow"); 

Ich versuche, alle Zeilen aus Datenraster zu erhalten . Aber momentan bekomme ich nur die Zeilen, die wegen Binding-System und Virtualisierung auf einem Bildschirm angezeigt werden. Ist es in irgendeiner Weise möglich, alle Zeilen von DataGrid zu erhalten, die nicht angezeigt werden?

Antwort

1

Ist es in irgendeiner Weise möglich, alle Zeilen von DataGrid, die nicht angezeigt wird, zu erhalten?

Nur wenn Sie die Virtualisierung in Ihrer Anwendung deaktivieren:

<DataGrid VirtualizingPanel.IsVirtualizing="False" ... /> 

Es gibt keine DataGridRow Reihe Behälter für die Zeilen, die im Speicher verfügbar weg virtualisiert wurden, und man kann nicht einen Verweis auf ein Objekt erhalten, existiert nicht.

+0

Sehr wichtig, 'EnableRowVirtualization =" False "' auch zu setzen. – A191919