在XF中使用自定义DataTemplate和XAML

时间:2016-04-20 17:01:11

标签: c# xamarin xamarin.forms

此代码正常运行:

<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中创建它?

1 个答案:

答案 0 :(得分:1)

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

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

<local:MenuListCell />

单元格的Datacontext是您的项目。

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

是列表项的属性。