Xamarin在ListView项上的表单AutomationId

时间:2019-04-30 16:37:25

标签: c# xaml xamarin.forms xamarin.forms.listview

我正在尝试使用Xamarin Forms中的AutomationId可绑定属性,以更好地与Tosca Automation一起使用。我有一个ListView,可以说我用“ Test”类型的对象列表(称为TestList)填充它。我本质上想将AutomationId设置为“ Test- {TestList.indexOf(testObject)}”。

我尝试将其绑定到递增的ID,但是如果在一个屏幕上有两个ListView,那将无济于事。没有办法从另一个列表中唯一地标识一个列表。我需要具有对象类型+唯一ID。

如果我用3个“测试”对象填充列表,则最终结果会将ContentDescriptions设置为:Test0,Test1,Test2

有人知道是否存在“行业标准”或简便,可维护的方式吗?

1 个答案:

答案 0 :(得分:0)

这只是一个例子。代码可能无法正常工作,因为我没有在任何代码编辑器中键入SO编辑器。希望你能理解:

型号:

public class TestObject
{
    public string Id {get;set;}
    public string DisplayText {get;set;}
}

ViewModel:

public class TestPageViewModel
{
     public ObservableList<TestObject> TestObjects= new ObservableList<TestObject>();

     //Skipped all Data initialization logics.
}

Xaml第一个列表:

<ListView x:Name="List1" AutomationId="List1" ItemSource="{Binding TestObjects">
    <ListView.ItemTemplate>
         <DataTemplate>
              <ViewCell>
                   <StackLayout Orientation="Horizontal" AutomationId="{Binding Id,StringFormat='$List1Test{0}'}">
                        <!-- Rest of your Xaml -->
                   </StackLayout>
              <ViewCell>
         <DataTemplate>
    <ListView.ItemTemplate>          
</ListView>

第二个列表:

<ListView x:Name="List2" AutomationId="List2" ItemSource="{Binding TestObjects">
    <ListView.ItemTemplate>
         <DataTemplate>
              <ViewCell>
                   <StackLayout Orientation="Horizontal" AutomationId="{Binding Id,StringFormat='$List2Test{0}'}">
                        <!-- Rest of your Xaml -->
                   </StackLayout>
              <ViewCell>
         <DataTemplate>
    <ListView.ItemTemplate>          
</ListView>