将XF中的自定义DataTemplate与XAML一起使用

本文关键字:XAML 一起 DataTemplate XF 自定义 | 更新日期: 2024-10-19 15:31:53

此代码正在工作:

<ListView ItemsSource="{Binding ItemsSourcePrimary}" VerticalOptions="FillAndExpand">
    <ListView.ItemTemplate>
      <DataTemplate>
        <ViewCell>
          <ViewCell.View>
            <StackLayout Padding="15, 5, 15, 5" Orientation="Horizontal" HorizontalOptions="FillAndExpand">
              <Image Source="{Binding IconSource}" Aspect="AspectFit" HorizontalOptions="Center" VerticalOptions="Center" />
              <Label Text="{Binding Title}" VerticalOptions="Center" />
            </StackLayout>
          </ViewCell.View>
        </ViewCell>
      </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

但我想把一个部分分成这样一个类:

<ListView ItemsSource="{Binding ItemsSourcePrimary}" VerticalOptions="FillAndExpand">
    <ListView.ItemTemplate>
      <DataTemplate>
        <local:MenuListCell Title="{Binding Title}" IconSource="{Binding IconSource}" />
      </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

但我有一个错误:

未找到文本名称的属性

我在一个xaml文件中用以下代码实现了MenuListCell类:

<?xml version="1.0" encoding="utf-8" ?>
<ViewCell xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="Test.MenuListCell">
    <ViewCell.View>
        <StackLayout Padding="15, 5, 15, 5" Orientation="Horizontal" HorizontalOptions="FillAndExpand">
          <Image Source="{Binding IconSource}" Aspect="AspectFit" HorizontalOptions="Center" VerticalOptions="Center" />
          <Label Text="{Binding Title}" VerticalOptions="Center" />
        </StackLayout>
    </ViewCell.View>
</ViewCell>

你有解决方案吗?我们是否需要创建一个c#文件.cs来实现这些属性,或者我们可以在xaml中实现它?

将XF中的自定义DataTemplate与XAML一起使用

如果始终将MenuListCell绑定到相同类型的对象,则只需更改

<local:MenuListCell Title="{Binding Title}" IconSource="{Binding IconSource}" />

<local:MenuListCell />

单元格的数据内容是您的项目。因此中的Title

 <Label Text="{Binding Title}" VerticalOptions="Center" />

是列表项的属性。