0

这是我用来绑定包含架构图像的项目列表的一些 XAML 代码。我的图像显示正确,但未填充 ListViewItem 的宽度,尽管高度已正确填充。我的图像也是方形的,所以我知道这不会发生,因为图像没有明显的失真。

此外,我注意到 ListViewItem 有一个浅灰色的背景颜色,它应该是透明的,或者 null/none。

有人知道如何正确绑定吗?

                <ListView x:Name="listView_Architecture" SelectionMode="Single" ScrollViewer.VerticalScrollBarVisibility="Disabled" VerticalContentAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Visible" HorizontalContentAlignment="Stretch" SelectionChanged="listView_Architecture_SelectionChanged">
                    <ListView.ItemsPanel>
                        <ItemsPanelTemplate>
                            <StackPanel Orientation="Horizontal"/>
                        </ItemsPanelTemplate>
                    </ListView.ItemsPanel>
                    <ListView.ItemContainerStyle>
                        <Style TargetType="{x:Type ListViewItem}">
                            <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding IsVisible}" Value="True">
                                    <Setter Property="Visibility" Value="Visible" />
                                </DataTrigger>
                                <DataTrigger Binding="{Binding IsVisible}" Value="False">
                                    <Setter Property="Visibility" Value="Collapsed" />
                                </DataTrigger>
                                <DataTrigger Binding="{Binding IsSelected, Mode=TwoWay}" Value="True">
                                    <Setter Property="IsSelected" Value="True" />
                                </DataTrigger>
                                <DataTrigger Binding="{Binding IsSelected, Mode=TwoWay}" Value="False">
                                    <Setter Property="IsSelected" Value="False" />
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </ListView.ItemContainerStyle>
                    <ListView.View>
                        <GridView AllowsColumnReorder="False">
                            <GridView.ColumnHeaderContainerStyle>
                                <Style TargetType="{x:Type GridViewColumnHeader}">
                                    <Setter Property="Visibility" Value="Collapsed"/>
                                </Style>
                            </GridView.ColumnHeaderContainerStyle>
                            <GridViewColumn>
                                <GridViewColumn.CellTemplate>
                                    <DataTemplate>
                                        <Image Stretch="Fill" Source="{Binding SetupImage, Converter={StaticResource ImageToSourceConverter}}"/>
                                    </DataTemplate>
                                </GridViewColumn.CellTemplate>
                            </GridViewColumn>
                        </GridView>
                    </ListView.View>
                </ListView>
4

1 回答 1

0

很难理解你在那里实际问的是什么。

您首先提到图像不适合完整尺寸,然后跳转到灰色背景,然后您最终谈论绑定。问题到底是什么?

我会回答你第一个。其他的很容易,我想你会自己找到这些答案。Binding aint that hard to understand and Input Window in Visual Studio将为您提供有关您在绑定中做错了什么的各种信息

Image 没有占用所有可用空间的原因是因为 Image 不知道那里有多少可用空间。

当 ListView 被测量并且它的孩子正在被安排时,它会计算并设置它的孩子的高度值,所以孩子们知道高度,但不会在每个孩子上设置宽度。因此,您的图像无法找到一个祖先来接收可用的宽度,因此它不知道拉伸采用什么宽度值,因此它将以其正常大小显示,因为这是没有找到其他值时的默认值。

如果您想测试此行为,只需在 ListViewItem 样式中设置一个固定宽度值。如果您将该值设置为 200 像素,图像将被拉伸到 200 的宽度。虽然当您没有设置任何宽度时,将找不到图像的值来知道如何拉伸自身。

就这么简单。:)

于 2013-11-04T23:01:49.740 回答