Mac*_*ius 5 wpf grid datatemplate
我在 WPF 中有一个网格,它由沿 2 列的 4 行组成,其中第 1 列包含一个图像控件,第 2 列包含 4 个文本块。问题是,Image 控件将自身大小调整为 Image 大小,并将列表框的条目扩展到过多 [Its in a DataTemplate] 并使所有内容看起来失真。我不想手动设置最大高度/宽度,因为我希望图像将自身大小调整为旁边的 4 个文本块的大小。有任何想法吗?
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Image Source="{Binding Logo, Converter={StaticResource BSConverter}}" Grid.Row="0" Grid.RowSpan="4"
Grid.Column="0" Stretch="Uniform" SnapsToDevicePixels="True"/>
<TextBlock Text="{Binding Name}" Grid.Row="0" Grid.Column="1"/>
<TextBlock Text="{Binding Author}" Grid.Row="1" Grid.Column="1"/>
<TextBlock Text="{Binding Version}" Grid.Row="2" Grid.Column="1"/>
<TextBlock Text="{Binding Description}" Grid.Row="3" Grid.Column="1"/>
</Grid>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
提前致谢
您可以在父列表框上使用 Grid.IsSharedSizeGroup 来确保所有项目的第一列具有相同的宽度,如下所示
<ListBox ...
Grid.IsSharedSizeScope="True">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="GroupA"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
...
Run Code Online (Sandbox Code Playgroud)
对于图像高度问题,您可以将 Height 绑定到父网格的 ActualHeight,FallbackValue 为 1.0(以确保图像的高度不会影响网格的高度)
<Image Source="{Binding Logo, Converter={StaticResource BSConverter}}"
Grid.Row="0"
Grid.RowSpan="4"
Grid.Column="0"
Stretch="Uniform" SnapsToDevicePixels="True"
Height="{Binding RelativeSource={RelativeSource AncestorType=Grid},
Path=ActualHeight,
FallbackValue=1.0}"/>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1186 次 |
最近记录: |