绑定ListView分组标题

3

我想简单地在Windows 10的列表视图中显示条目,并按组分开。一切工作正常,只是无法绑定组的标题。

这是我的当前XAML:

<ListView ItemsSource="{Binding Source={StaticResource cvsEpisodes}}"/>
  <ListView.ItemTemplate>
    <DataTemplate>
      <Grid>
        <TextBlock Text="{Binding EpisodeNB}"/>
        <TextBlock Text="{Binding EpisodeTT}"/>
        <TextBlock Text="{Binding EpisodeDESC}"/>
      </Grid>
    </DataTemplate>
  </ListView.ItemTemplate>
  <ListView.GroupStyle>
    <GroupStyle>
      <GroupStyle.HeaderTemplate>
        <DataTemplate>
          <Grid>
            <TextBlock Text="{Binding SEASONNB}"/>
          </Grid>
        </DataTemplate>
      </GroupStyle.HeaderTemplate>
    </GroupStyle>
  </ListView.GroupStyle>
</ListView>
<Page.Ressources>
    <CollectionViewSource x:Name="cvsEpisodes" IsSourceGrouped="True"/>
</Page.Ressources>

并且,由OnNavigatedTo事件执行的C#代码:

List < EPISODELST > Episodes = new List < EPISODELST > ();
var episodes = root.episodes.Select(m = >new EPISODELST {EpisodeTT = m.title, EpisodeNB = m.episode.ToString(), EpisodeDESC = m.overview, SEASONNB = m.season.ToString()}).ToList();

foreach(EPISODELST s in episodes) 
    {
        Episodes.Add(new EPISODELST {EpisodeTT = s.EpisodeTT, EpisodeDESC = s.EpisodeDESC, EpisodeNB = "EPISODE " + s.EpisodeNB, SEASONNB = s.SEASONNB });
    }

var result = from EPISODELST in Episodes group EPISODELST by EPISODELST.SEASONNB into grp orderby grp.Key select grp;
cvsEpisodes.Source = result;

(EPISODELST和episodes是两个类,但不需要在此处粘贴它们)

我在网上看到了许多其他分组列表视图的实现,但它们都比这个复杂得多,我猜这应该可以工作,因为我可以看出代码可以成功地正确排序所有数据。 问题可能只与TextBlock的绑定有关,但我尝试了网上找到的各种其他方法,例如{Binding=Name}或{Binding Key.Name},但似乎没有任何作用。

1个回答

5

所以,最终这很简单。我在 Microsoft 的 UWP Github 示例页面 找到了深藏的答案。 它必须绑定到 {Binding Key}

在 GroupStyle 内部:

<TextBlock Text="{Binding Key}"/>

这是我在Windows 10通用应用程序中能使用的唯一解决方案(大部分都在问题本身中)。 - JBernardo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接