c# - 数据绑定 Pivot 控件,同时在每个 Pivot 项数据模板内进行数据绑定
问题描述
所以我有一个绑定到Pivot
控件的“ObservableCollection”。这ObservableCollection
有一个也是 an 的孩子,ObservableCollection
我正在尝试将 a 绑定GridView
到每个Pivotitem
人的身体中。
我已经测试了我的代码隐藏以确保填充集合,即
// Level 1 ObservableCollection
foreach (var dchallenge in ChallengesList)
{
// Level 2 ObservableCollection
Debug.WriteLine(dchallenge.Name);
foreach (var dactivity in dchallenge.Activities)
{
Debug.WriteLine(dactivity.Name);
}
}
并且它的输出符合预期。
作为参考,我的模型如下:
public class Challenge
{
public string Type { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public string Slug { get; set; }
public string Image { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public ObservableCollection<Activity> Activities { get; set; }
public class Activity
{
public string Name { get; set; }
public string Description { get; set; }
public long Hash { get; set; }
}
}
最后,我的观点:
<Pivot x:Name="Items" ItemsSource="{x:Bind ChallengesList, Mode=OneWay}" Margin="20,417,0,0">
<Pivot.HeaderTemplate>
<DataTemplate x:DataType="data:Challenge">
<TextBlock Text="{Binding Name, Mode=OneWay}" FontWeight="Normal" FontSize="16"/>
</DataTemplate>
</Pivot.HeaderTemplate>
<Pivot.ItemTemplate>
<DataTemplate x:DataType="data:Challenge">
<StackPanel Margin="0,20,0,0" HorizontalAlignment="Left">
<TextBlock Text="{Binding Description, Mode=OneWay}" MaxWidth="300" TextWrapping="WrapWholeWords"/>
<TextBlock Text="Activities" FontWeight="Medium" MaxWidth="300" Margin="0,20,0,0"/>
<!--<GridView DataContext="{Binding}" ItemsSource="{x:Bind Activities}" SelectionMode="None"
IsItemClickEnabled="False" IsSwipeEnabled="False" CanDragItems="False"
HorizontalAlignment="Left" Margin="0,70,0,0" VerticalAlignment="Top" Width="300">
<GridView.ItemTemplate>
<DataTemplate x:DataType="data:Challenge">
<StackPanel VerticalAlignment="Top" HorizontalAlignment="Left">
<TextBlock FontSize="16" Text="{x:Bind Name}" />
</StackPanel>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>-->
</StackPanel>
</DataTemplate>
</Pivot.ItemTemplate>
</Pivot>
AGridView
可能不是我最终确定的控件,但如果我知道如何绑定它,那么我应该能够将该知识与另一个控件一起使用。
Intellisense 有助于确定哪些属性可用,但Activities
不是一个。我只得到诸如Name
and之类的字符串Description
可以正常工作(前两个TextBlock
)。
解决方案
我看到的唯一问题是您DataType
在内部使用了错误的GridView
. Activities
集合中的类型是 ,它是一个嵌套类,嵌套类在 XAMLChallenge.Activity
中用加号 ( ) 表示,因此:+
data:Challenge+Activity
<GridView DataContext="{Binding}" ItemsSource="{x:Bind Activities}" SelectionMode="None"
IsItemClickEnabled="False" IsSwipeEnabled="False" CanDragItems="False"
HorizontalAlignment="Left" Margin="0,70,0,0" VerticalAlignment="Top" Width="300">
<GridView.ItemTemplate>
<DataTemplate x:DataType="data:Challenge+Activity">
<StackPanel VerticalAlignment="Top" HorizontalAlignment="Left">
<TextBlock FontSize="16" Text="{x:Bind Name}" />
</StackPanel>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
VS 可能仍会抛出一些警告,但编译成功后会消失。
推荐阅读
- java - 如何在 Android Studio 中获取 Gradle 中的 JDK 路径?
- swift - 将 Firebase 导入 Xcode 项目的问题
- botframework - 某个自适应卡使我的网络聊天崩溃
- sql - Oracle SQL:使用来自同一表的另一列的数据更新表
- javascript - 统一页面加载
- audio - 当 jupyter notebook 中的单元完成运行时,如何创建声音警报?
- complexity-theory - 降低 SAT 到 HALT
- android - 意外的 XML 视图格式化 Android Studio 3.5
- drupal - 在 Drupal 8 中,使用部署模块,我无法部署嵌入或附加的图像/文件,有没有人能够让它使用它?
- git - PyCharm 中的存储差异