4

私は白いプロジェクトに非常に慣れていないので、その機能をチェックするだけでした...私の仕事では、wpfとデータグリッドを集中的に扱っています.列がDataGridTemplateColumnの場合、データグリッドセルの値を取得できませんでした.

DataGridTemplateColumn のみではなく、すべての列タイプに対応しています。

私のデータグリッドは次のとおりでした:

    <my:DataGrid AutoGenerateColumns="False" Margin="25,28,42,34" Name="dataGrid1" >
        <my:DataGrid.Columns>
            <my:DataGridTemplateColumn Header="Header"  x:Name="koko" Width="200">
                <my:DataGridTemplateColumn.CellTemplate >
                    <DataTemplate >
                        <TextBlock Name="moko" Text="{Binding col1, Mode=OneWay,Converter={StaticResource fataGridHighlightConverter }}" ></TextBlock>

                    </DataTemplate>
                </my:DataGridTemplateColumn.CellTemplate>
                <my:DataGridTemplateColumn.CellEditingTemplate>
                    <DataTemplate>
                        <Grid x:Name="myEditGrid" Loaded="myEditGrid_Loaded">
                        </Grid>
                    </DataTemplate>
                </my:DataGridTemplateColumn.CellEditingTemplate>
            </my:DataGridTemplateColumn>
        </my:DataGrid.Columns>
    </my:DataGrid>

そして私のテストは:

           [Test]
    public void TestDatagrid5()
    {
        var tab = _win.Get<ListView>(SearchCriteria.ByAutomationId("dataGrid1"));
        var count = tab.Rows.Count;
        var row = tab.Rows[1];
        ListViewCell x = row.Cells[1]; //Always count = 0 :(
    }

しかし、セル数は常に= 0です。セル値を取得する必要があります!!!? 助けてください!

4

3 に答える 3

1

私はこの答えが好きではなく、これを行うためのより良い方法を見つけたい..

つまり、グリッド内の要素の ListViewRow アイテムを要求すると、UiAutomationElement を取得して、その要素のホワイト バージョンを自分で作成できます。

[Test]
public void TestDatagrid5()
{
  var tab = _win.Get<ListView>(SearchCriteria.ByAutomationId"dataGrid1"));

  var column = new List<string>();

  foreach (var r in tab.Rows)
  {
    var automationElement = r.GetElement(SearchCriteria.ByAutomationId("moko"));

    var label = new Label(automationElement, new NullActionListener());

    column.Add(label.Text);
  }

  Assert.That(column, Is.EquivalentTo(new[] { "what", "is", "expected" }));

}
于 2011-11-05T21:43:54.587 に答える
0

foreach (var r in tab.Rows) { var automaticElement = r.GetElement(SearchCriteria.ByAutomationId("moko"));

var label = new Label(automationElement, new NullActionListener());

column.Add(label.Text); }

警告として、このメソッドは、表示されている行だけをすべて取得する場合には機能しない可能性があります

于 2013-11-22T14:05:42.027 に答える