下面是一些 XAML 代码,我用来绑定包含体系结构映像的项列表。我的图像显示正确,但未填充列表视图项的宽度,尽管高度已正确填充。我的图像也是方形的,所以我知道这不会发生,因为图像没有明显的失真。
此外,我注意到 ListViewItem 具有浅灰色背景色,它应该是透明的,或者 null/non。
有人知道如何正确绑定吗?
<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>
很难理解你在那里实际问的是什么。
您首先提到图像不适合完整的尺寸,然后跳到灰色背景,然后最终谈论绑定。问题到底是什么?
我会回答你第一个。其他的很容易,我想你会自己找到这些答案。绑定很难理解,Visual Studio中的输入窗口将为您提供有关您在绑定中做错了什么的所有信息
映像没有占用所有可用空间的原因是映像不知道那里有多少可用空间。
当测量 ListView 并排列其子项时,它将计算高度值并将其设置为其子项,以便子项知道高度,但不会在每个子项上设置宽度。因此,您的图像找不到要从中接收可用宽度的祖先,因此它不知道要采用什么宽度值进行拉伸,因此它将以正常大小显示,因为这是没有找到其他值时的默认值。
如果要测试此行为,只需以列表视图项的样式设置固定宽度值。如果将该值设置为 200 像素,则图像将被拉伸到 200 的宽度。虽然当你不设置任何宽度时,不会找到图像知道如何拉伸自己的值。
这么简单。:)