Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用System.Linq.IGrouping时为x:DataType分配什么_C#_Xaml_Xamarin_.net Standard 2.1 - Fatal编程技术网

C# 使用System.Linq.IGrouping时为x:DataType分配什么

C# 使用System.Linq.IGrouping时为x:DataType分配什么,c#,xaml,xamarin,.net-standard-2.1,C#,Xaml,Xamarin,.net Standard 2.1,好吧,这应该很简单,但我被卡住了 我正在升级一个旧的.Net Xamarin项目,我想做的一件事是向XAML文件添加x:DataType标记,以便它能够验证和自动完成所有绑定。例如 <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"

好吧,这应该很简单,但我被卡住了

我正在升级一个旧的.Net Xamarin项目,我想做的一件事是向XAML文件添加x:DataType标记,以便它能够验证和自动完成所有绑定。例如

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
             xmlns:vm="clr-namespace:MyProject.PageModels.Info"
             xmlns:models="clr-namespace:MyProject.Models"
             x:DataType="vm:InfoViewModel"
             x:Class="MyProject.Pages.Info.InfoPage"
             Title="PageTitle">

到目前为止还不错,但此特定页面显示了一组记录列表,定义如下:

public List<IGrouping<string, LocalDocument>> GroupedDocs { get; set; }
public List GroupedDocs{get;set;}
现在编译器会抱怨,因为我没有为ListView.GroupHeaderTemplate设置有效的数据类型(因为模板中的绑定在ViewModel中不存在)。。。我不知道该给它分配什么,因为x:DataType似乎不支持接口(甚至不提接口+泛型)


我应该指定什么来代替????在前面的代码示例中?


作为一种变通方法,我创建了一个虚拟类,它实现了您可以尝试创建自己的分组

public class Grouping<K, T> : ObservableCollection<T>
{
    public K Key { get; private set; }

    public Grouping(K key, IEnumerable<T> items)
    {
        Key = key;
        foreach (var item in items)
            this.Items.Add(item);
    }
}
公共类分组:ObservableCollection
{
公钥{get;private set;}
公共分组(K键,IEnumerable项)
{
钥匙=钥匙;
foreach(项目中的var项目)
此.Items.Add(item);
}
}
用法:

 public ObservableCollection<Grouping<string, LocalDocument>> GroupedDocs { get; set; }
public-observeCollection-GroupedDocs{get;set;}

从下面的链接下载源文件

我可以转换它,如果你是这个意思的话,但是它是Linq调用的结果,返回一个IGrouping。我喜欢这个解决方案!它仍然需要一个额外的C#类,这只是因为,但是指定的x:DataType和属性将是一致的(并且该类将来可能会方便地添加额外的属性)。
 public ObservableCollection<Grouping<string, LocalDocument>> GroupedDocs { get; set; }