我有一个DataTemplate,用作描述Version对象的徽标。徽标只是一个图像,上面有一些文字。
我必须在2个地方使用DataTemplate: - 作为按钮的内容 - 作为ListBox的缩略图项目
问题是,ListBox中的徽标必须小于Button中的徽标。这不会给徽标图像带来麻烦,徽标图像会自动缩放。但字体大小不会自动缩放。
所以我被建议使用ViewBox作为我整个徽标的XAML描述的父级。
这是DataTemplate:
<DataTemplate DataType="{x:Type l:Version}">
<Viewbox>
<Grid Width="175">
<Image Source="{StaticResource Crate}"/>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" FontSize="18" Text="{Binding Type}" />
<TextBlock Grid.Row="1" FontSize="20" Text="{Binding Platform}" />
<TextBlock Grid.Row="2" FontSize="20" Text="{Binding ApprovedVersion}" />
<TextBlock Grid.Row="3" FontSize="16" Text="{Binding StringFormat=C\{0\}, Path=CodeChangeList}" />
<TextBlock Grid.Row="4" FontSize="16" Text="{Binding StringFormat=D\{0\}, Path=DataChangeList}" />
<TextBlock Grid.Row="5" FontSize="16" Text="{Binding StringFormat=S\{0\}, Path=SoundChangeList}" />
</Grid>
</Grid>
</Viewbox>
</DataTemplate>
然后我只需将我的按钮的DataContext更改为Version对象即可使用此模板。然后自动使用DataTemplate。
<Button
x:Name="buttonVersion"
Width="300"
Height="300"
Click="SelectVersionButton_Click"
Background="Transparent"
Content="{Binding}">
</Button>
为什么我的徽标没有填满整个按钮?很明显,利润无处不在,我无法解释这一点。
有趣的是,如果我从Grid子项(ViewBox的子项)中删除Width =“175”,则ViewBox将完全填充该按钮。 但是,我的徽标的字体大小不再正确缩放,因为此网格宽度类似于ViewBox应该用来适当缩放其余部分的“参考尺寸”...
提前致谢
答案 0 :(得分:1)
好的,问题是如何解决的:
我的字体大小已根据175x175的包装箱图像进行了调整。箱子图像是256x256。如果在Grid元素中未指定Width = 175,则ViewBox将根据图像的原始大小(256x256)计算比率。此外,由于ViewBox,按钮300x300现在完全由包装箱图像填充,并且字体大小也相应增加。
因此,在第2步中,我必须调整256x256图像的字体大小,而不是175x175图像的字体大小。