Version オブジェクトを説明するロゴとして使用される DataTemplate があります。ロゴは単なる画像とその上にあるテキストです。
DataTemplate を 2 つの場所で使用する必要があります: - ボタンのコンテンツとして - リストボックスのサムネイル項目として
問題は、ListBox のロゴは Button のロゴよりもはるかに小さくする必要があるということです。これは、自動的にスケーリングされるロゴ イメージに問題を引き起こすことはありません。ただし、フォント サイズは自動的にスケーリングされません。
そのため、ViewBox をロゴ全体の XAML 記述の親として使用するよう提案されました。
データテンプレートは次のとおりです。
<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 がボタン全体を埋めることです。ただし、この Grid Width は ViewBox が残りを適切にスケーリングするために使用する必要がある「参照サイズ」のようなものであるため、私のロゴのフォントサイズは正しくスケーリングされなくなりました...
前もって感謝します