2009-06-02 11 views
1

私は、バージョンオブジェクトを記述するためのロゴとして使用される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を適切に休息を縮小するために使用する「基準サイズ」のようなものですので、私のロゴのフォントサイズは、もはや正しくスケールされていない...事前に

おかげ

+0

あなたは私の最初の反応について正しくありました。私はそれがどう動くかについて非難をする前に、コントロールを使うべきだと思う。誰かを混乱させるのを避けるために応答を削除しました。 – PeterAllenWebb

+0

私はグリッドマージンについて尋ねました - それは関連性がなく、私は今Thibautが質問からその行を削除したことを知っています - 私は答えを削除しました – ChrisF

答えて

1

よし、ここで問題が解決した方法です。

  1. が再び
をフォントサイズを調整するDataTemplateのグリッド
  • の幅= 175を削除します

    私のフォントサイズは、175x175のクレート画像用に調整されています。クレート画像は256x256です。 Grid要素にWidth = 175を指定しないと、画像の元のサイズ(256x256)のためにViewBoxが比率を計算するように見えます。また、ボタン300x300は、ViewBoxのおかげでクレート画像で完全に埋められ、それに応じてフォントサイズが大きくなりました。

    手順2では、175x175の画像ではなく、256x256の画像のフォントサイズを調整する必要がありました。

  • 関連する問題