UWP XAML 智能感知 DataTemplate.DataType

UWP XAML Intellisense DataTemplate.DataType

为什么intellisense会过滤掉接口并抽象classes?如果我将 DataType 设置为抽象 class,它似乎仍然可以正常工作。也许这只是一个错误?此外,相关的是,在 DataTemplate 内部,当我尝试 {x:Bind} 时,它会过滤掉继承的属性,因此如果我有 Item : Base,并且 Base 有 属性 NameDataType="Item",它过滤掉 属性 Name,如果我仍然使用它,它似乎解析为 class 名称。我错过了文档中的某些内容吗?我是否应该为要绑定到 xaml 控件的每种类型制作特殊的非抽象包装 classes?

经过我的测试,在使用 X:Bind 时,编译器似乎无法识别继承的接口属性。但它适用于抽象 类.

您可以按照示例检查您的步骤。

XAML代码:

<ListView x:Name="List" ItemsSource="{x:Bind Fruits}">
            <ListView.ItemTemplate>
                <DataTemplate x:DataType="local:Fruit">
                    <TextBlock Text="{x:Bind price}"/>
                </DataTemplate>
            </ListView.ItemTemplate>
</ListView>

后面的代码:

public sealed partial class MainPage : Page
{
    public ObservableCollection<Fruit> Fruits{get;set;}
    public MainPage()
    {
        this.InitializeComponent();
        Fruits = new ObservableCollection<Fruit>()
        {
            new Fruit(){name="apple",price=12},
            new Fruit(){name="peach",price=15},
            new Fruit(){name="pear",price=8},
            new Fruit(){name="banana",price=31},
            new Fruit(){name="grape",price=5}   
        };        
    }
}
public class Fruit: IFruit
{
    public string name { get; set;}
}
public abstract class IFruit
{    
    public int price { get; set;}
}