C# xamarin.forms-在XAML中唯一标识listview中的控件

C# xamarin.forms-在XAML中唯一标识listview中的控件,c#,xaml,xamarin.forms,C#,Xaml,Xamarin.forms,我是xamarin的新手 我有一个从后端c#代码填充的列表视图 我在其中定义了一个标签和一个图像。我在XAML中给出了x:Name属性 现在,我的问题是我想在后端c#代码中访问这两个标签。但这两个标签都不可访问,因为它们位于listview中。如果我把标签放在listview之外,我可以在代码中访问它 请避免语法错误。我的代码工作正常。我想访问这些元素,以便更改手机和平板电脑的样式 我的XAML代码: // ... <ListView x:Name="DentistList">

我是xamarin的新手

我有一个从后端c#代码填充的列表视图

我在其中定义了一个标签和一个图像。我在XAML中给出了x:Name属性

现在,我的问题是我想在后端c#代码中访问这两个标签。但这两个标签都不可访问,因为它们位于listview中。如果我把标签放在listview之外,我可以在代码中访问它

请避免语法错误。我的代码工作正常。我想访问这些元素,以便更改手机和平板电脑的样式

我的XAML代码:

// ...
<ListView x:Name="DentistList">
   <Listview.ItemTemplate>
      <DataTemplate>
         <ViewCell>
           <Image Source="{Binding ImagePath}" x:Name="DoctorImage"/>
           <Label Text="{Binding Name}" x:Name="DoctorName" />
         </ViewCell>
      </DataTemplate>
   </Listview.ItemTemplate>
</ListView>
/。。。
我的c#代码:

。。。。。。
DentistList.ItemSource=新列表
{
//此处定义的项目列表,如。。。
Name=“ABC”,
ImagePath=“img1.jpg”
//等等。。。
};
现在,在这个列表下面,我想更改标签和图像的样式(如fontsize等)。但我无法访问它们

我试图用FindByName()方法访问它们,但无法做到这一点

那么,有人能回答吗


提前谢谢。

根据Jason的评论,您可以使用
OnIdiom
更改
Label.FontSize
Label.TextColor
,如下所示:

<Label Text="{Binding Name}" x:Name="DoctorName">
    <Label.TextColor>
        <OnIdiom x:TypeArguments="Color"
                 Phone="Yellow"
                 Tablet="Blue"/>
    </Label.TextColor>

    <Label.FontSize>
        <OnIdiom x:TypeArguments="NamedSize"
                 Phone="Small"
                 Tablet="Large"/>
    </Label.FontSize>
</Label>
现在,在您的
ContentPage
s中:

<Label x:Name="DoctorName"
       Text="{Binding Name}"
       TextColor="{StaticResource MyTextColor}"
       FontSize="{StaticResource MyFontSize}"/>


如果您想使用
NamedSize
,您可能需要使用我在Xamarin论坛上看到的转换器。如果您找不到,请告诉我,我可以试着四处看看。

您不能按名称引用模板中的控件,因为每个控件都有多个实例,列表中的每个项目都有一个实例。如果您想为平板电脑定制它们,请尝试在XAML中使用OnIdiom,或者使用样式。感谢您的评论@Jason,但我如何使用OnIdiom更改fontsize和textcolor,因为我找不到实现它的解决方案。感谢评论@hvaghan3。我会试试看……:)似乎很有用:)我可以使用静态值而不是使用大小值吗?@sweets如果你指的是常规整数值,当然可以。请参见编辑。
<Label.FontSize>
    <OnIdiom x:TypeArguments="x:Double"
             Phone="20"
             Tablet="30"/>
</Label.FontSize>
<Application xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MyApp.App">
  <Application.Resources>
    <ResourceDictionary>

      <Color x:Key="MyTextColor">
        <Color.Accent>
          <OnIdiom x:TypeArguments="Color"
                   Phone="Yellow"
                   Tablet="Blue"/>
        </Color.Accent>
      </Color>

      <x:Double x:Key="MyFontSize">
        <OnIdiom x:TypeArguments="x:Double"
                 Phone="20"
                 Tablet="30"/>
      </x:Double>

    </ResourceDictionary>
  </Application.Resources>
</Application>
<Label x:Name="DoctorName"
       Text="{Binding Name}"
       TextColor="{StaticResource MyTextColor}"
       FontSize="{StaticResource MyFontSize}"/>