在网格的一行中绑定更多元素
本文关键字:绑定 元素 一行 网格 | 更新日期: 2023-09-27 18:18:30
我想有5列并绑定元素列表。每个元素都有一个图片。我想显示一行5个元素的图片。
实际上这是我的代码
<ListBox ItemsSource="{Binding Buildings}" Width="350" Margin="0,5,0,10">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" CanHorizontallyScroll="True">
<!--<TextBlock Padding="5,0,5,0" Text="{Binding Name}" />-->
<Image Source="{Binding Name,Converter={StaticResource CivToImage}}" Height="50px" Width="50px"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我也想给信息,如名称(建筑名称)和成本(建筑成本)与一个工具提示。
不幸的是,我只能显示一行中的一个元素…我尝试了一个网格的解决方案,但它只显示每行一个图像:
<DataGrid ItemsSource="{Binding Buildings}">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Name" Width="SizeToCells" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Source="{Binding Name,Converter={StaticResource CivToImage}}" Height="50px" Width="50px"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
谢谢你的帮助。
当你使用像:
<Grid>
<Image Name ="Image1" Source="{Binding Name,Converter={StaticResource CivToImage}}" Height="50px" Width="50px"/>
<Image Name ="Image2" Source="{Binding Name,Converter={StaticResource CivToImage}}" Height="50px" Width="50px"/>
</Grid>
所有的项目将定位在0,0,所以你将只看到一个将在顶部。你可以将这些图像的位置设置为第一个为0,0第二个为50px,0.
但我认为最好的方法是加上:
<StackPanel Orientation="Horizontal">
<Image Name ="Image1" Source="{Binding Name,Converter={StaticResource CivToImage}}" Height="50px" Width="50px"/>
<Image Name ="Image2" Source="{Binding Name,Converter={StaticResource CivToImage}}" Height="50px" Width="50px"/>
</StackPanel>
这将使您的所有项目彼此相邻。希望这是情况,因为我不是100%确定我理解了这个问题。