私は、バージョンオブジェクトを記述するためのロゴとして使用されるDataTemplateを持っています。ロゴは単なるイメージであり、その上にテキストがあります。事はある、ロゴがよりリストボックスではるかに小さくなければならないのListBox私が理解できないViewboxの動作
のサムネイル項目として - ボタン の内容として - :私は2ヶ所でのDataTemplateを使用する必要が
ボタンで。これは自動的に拡大縮小されたロゴ画像には問題ありません。しかし、フォントサイズは自動的に拡大/縮小されません。
私はロゴ全体のXAML記述の親としてViewBoxを使用することを提案しました。ここで
は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>
それから私は単にVersionオブジェクトに私のボタンのDataContextのを変更することで、このテンプレートを使用します。 DataTemplateは自動的に使用されます。
<Button
x:Name="buttonVersion"
Width="300"
Height="300"
Click="SelectVersionButton_Click"
Background="Transparent"
Content="{Binding}">
</Button>
どのように私のロゴがボタン全体を満たしていないのですか?明らかにどこからも余裕があり、私はこれを説明できません。
興味深いのは、グリッドの子(ViewBoxの子)からWidth = "175"を削除すると、ViewBoxがボタンを完全に埋めるということです。 このグリッド幅がViewBoxを適切に休息を縮小するために使用する「基準サイズ」のようなものですので、私のロゴのフォントサイズは、もはや正しくスケールされていない...事前に
おかげ
あなたは私の最初の反応について正しくありました。私はそれがどう動くかについて非難をする前に、コントロールを使うべきだと思う。誰かを混乱させるのを避けるために応答を削除しました。 – PeterAllenWebb
私はグリッドマージンについて尋ねました - それは関連性がなく、私は今Thibautが質問からその行を削除したことを知っています - 私は答えを削除しました – ChrisF