我已经开始使用SO WPF: arranging collection items in a grid中的示例开发代码了。现在,为了获得单元格选择功能,我将每个ItemsControl重命名为ListBox,因为ListBox是一个ItemsControl(XAMl有点简化):
<ListBox HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" ItemsSource="{Binding YourItems}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<Grid/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemContainerStyle>
<Style>
<Setter Property="Grid.Column" Value="{Binding X}"/>
<Setter Property="Grid.Row" Value="{Binding Y}"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<Image RenderOptions.BitmapScalingMode="LowQuality" Source="{Binding ...ImageSource, Mode=OneWay}">
</Image>
</DataTemplate>
</ListBox.ItemTemplate>
网格基于代码here填充了字形运行测试图像。
令人惊讶的是它有效 - 有点像。选择工作。但是,在ItemsControl的情况下,没有滚动条。一切都很好。当我使窗口变小时,网格单元缩小,图像也缩小。当我把窗户放大时,所有东西都缩小了。
现在,ListBox并非如此。图像大小保持不变。如果窗口不够大,则有一个水平滚动条,当窗口不够大时,一些图像被隐藏,用户需要向右滚动。
所以,我的问题是:如果ListBox是一个ItemControl,为什么我的图像不能同样缩放?我该怎么做才能纠正它?
答案 0 :(得分:1)
这是因为ListBox和ItemsControl使用不同的样式。您可以轻松地将ItemControl的默认样式应用于ListBox:
<ListBox Style="{StaticResource ResourceKey={x:Type ItemsControl}}">