在 FlipView 中显示绑定数据
Displaying bound data in a FlipView
我在 XAML 中声明了一个 FlipView 控件,我想将它绑定到一个在代码隐藏(.cs 文件)中定义和填充的集合源。此外,texblock 用于显示集合中某个项目的特定 属性。
XAML FlipView 声明:
<FlipView x:Name="FlipViewStudents" Grid.Row="1" Height="Auto" Width="Auto" ItemsSource="{x:Bind Students}">
<FlipView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<TextBlock x:Name="StudentName" Text="{Binding Name}" FontSize="60" Foreground="Green" FontWeight="Bold" TextAlignment="Left"/>
</StackPanel>
</DataTemplate>
</FlipView.ItemTemplate>
</FlipView>
C#代码隐藏(属于这个XAML文件的.cs文件)集合变量的定义:
private List<SingleStudent> Students { get; set; }
更新:
我正在 Page_Loaded 事件处理程序中初始化集合变量:
Students = new List<SingleStudent>();
此外,我正在使用具有 30 秒滴答间隔的 DispatcherTimer,并且我在 dispatcherTimer_Tick(当滴答发生时)处理程序(先清除它之后)中填充集合变量:
Students.Clear();
var singleStudent = new SingleStudent()
{
Name = "John",
Grade = "B"
};
Students.Add(singleStudent);
如图所示,集合变量每 30 秒清除和填充一次。我希望 GUI 中的 FlipView 会在项目添加到集合时自行更新。
我已经调试并检查对象是否已添加到代码中的集合中,但它没有在 GUI 中显示任何内容。
如图所示,SingleStudent 是一个 class,具有不同的属性,包括 Name,这是要在 FlipView 中显示的项目 属性。
我也尝试过使用 ObservableCollection,但这也不会显示任何内容。
感谢帮助或提示。
正如您提到的,在使用 List<SingleStudent>
或 ObservableCollection<SingleStudent>
时,使用 ListView
而不是翻转视图时也会遇到同样的问题
我做了一些测试,结果证明在 Page_Loaded
事件中初始化集合会打乱您的数据绑定。因此你应该定义:
private ObservableCollection<SingleStudent> Students = new ObservableCollection<SingleStudent>();
或
private ObservableCollection<SingleStudent> Students { get; set; }
public TestPage() //Constructor of your page
{
Students = new ObservableCollection<SingleStudent>();
}
此外,您看到我使用 ObservableCollection<SingleStudent>
。您必须使用它而不是列表。使用 List<SingleStudent>
将不起作用,因为添加项目不会引发 INotifyPropertyChanged
,因此不会更新数据绑定。
我在 XAML 中声明了一个 FlipView 控件,我想将它绑定到一个在代码隐藏(.cs 文件)中定义和填充的集合源。此外,texblock 用于显示集合中某个项目的特定 属性。
XAML FlipView 声明:
<FlipView x:Name="FlipViewStudents" Grid.Row="1" Height="Auto" Width="Auto" ItemsSource="{x:Bind Students}">
<FlipView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<TextBlock x:Name="StudentName" Text="{Binding Name}" FontSize="60" Foreground="Green" FontWeight="Bold" TextAlignment="Left"/>
</StackPanel>
</DataTemplate>
</FlipView.ItemTemplate>
</FlipView>
C#代码隐藏(属于这个XAML文件的.cs文件)集合变量的定义:
private List<SingleStudent> Students { get; set; }
更新: 我正在 Page_Loaded 事件处理程序中初始化集合变量:
Students = new List<SingleStudent>();
此外,我正在使用具有 30 秒滴答间隔的 DispatcherTimer,并且我在 dispatcherTimer_Tick(当滴答发生时)处理程序(先清除它之后)中填充集合变量:
Students.Clear();
var singleStudent = new SingleStudent()
{
Name = "John",
Grade = "B"
};
Students.Add(singleStudent);
如图所示,集合变量每 30 秒清除和填充一次。我希望 GUI 中的 FlipView 会在项目添加到集合时自行更新。
我已经调试并检查对象是否已添加到代码中的集合中,但它没有在 GUI 中显示任何内容。
如图所示,SingleStudent 是一个 class,具有不同的属性,包括 Name,这是要在 FlipView 中显示的项目 属性。
我也尝试过使用 ObservableCollection,但这也不会显示任何内容。 感谢帮助或提示。
正如您提到的,在使用 List<SingleStudent>
或 ObservableCollection<SingleStudent>
ListView
而不是翻转视图时也会遇到同样的问题
我做了一些测试,结果证明在 Page_Loaded
事件中初始化集合会打乱您的数据绑定。因此你应该定义:
private ObservableCollection<SingleStudent> Students = new ObservableCollection<SingleStudent>();
或
private ObservableCollection<SingleStudent> Students { get; set; }
public TestPage() //Constructor of your page
{
Students = new ObservableCollection<SingleStudent>();
}
此外,您看到我使用 ObservableCollection<SingleStudent>
。您必须使用它而不是列表。使用 List<SingleStudent>
将不起作用,因为添加项目不会引发 INotifyPropertyChanged
,因此不会更新数据绑定。