1

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 が残りを適切にスケーリングするために使用する必要がある「参照サイズ」のようなものであるため、私のロゴのフォントサイズは正しくスケーリングされなくなりました...

前もって感謝します

4

1 に答える 1