我还是个新手,正在尝试我的第一个严肃的数据绑定。我已经阅读了很多关于它是如何工作的,我只是在努力解决这个具体的例子。我试图阅读我能找到的所有链接,但大多数来源在关键点上往往有点不精确。所以这里是:
-我的应用程序动态生成一个“List”类型的变量“PlayerList”,其中“Player”是一个复杂对象。
-我想通过绑定在 ListBox 中显示它。显然,由于 Player 是一个复杂的对象,我想为它创建一个 DataTemplate。所以我在'Window1.xaml'中有这样的东西:
<ListBox
Name="ListBox_Players"
ItemsSource="{Binding Source={StaticResource PlayerListResource}}"
ItemTemplate="{StaticResource PlayerTemplate}">
</ListBox>
和'App.xaml'中的类似内容:
<DataTemplate x:Key="PlayerTemplate"> <!-- DataType="{x:Type Player}" -->
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=name}"/>
<TextBlock Text=", "/>
<TextBlock Text="{Binding Path=nrOfTabls}"/>
</StackPanel>
</DataTemplate>
当然,这个模板以后会变得更加冗长。所以正如你在上面看到的,我试图为 PlayerList 变量创建一个资源,但还没有管理,即 smthn。像这样
<src: XXX x:Key="PlayerListResource"/>
据我了解,对于 XXX,我应该输入 Resource 变量的类。我试过了
List<Player>, List<src:Player>
等等,但是obv。XAML 对“<,>”字符有问题。
我还有另一个问题:通过不声明资源而是通过直接绑定(即在 C# 中编写“ListBox_Players.ItemsSource=PlayerList;”)并删除“ItemTemplate”声明并覆盖 Player 类的 ToString() 方法以输出我已经设法看到绑定有效的播放器的名称(即,我在列表框中获得了播放器名称的列表)。但是,如果我再次插入模板,它只显示','我的模板不起作用!