2009-06-02 2 views
1

У меня есть DataTemplate, который используется в качестве логотипа для описания объекта Версии. Логотип - это просто изображение и некоторый текст поверх него.Поведение, которое я не могу понять

Я должен использовать DataTemplate в 2 местах: - Как Контента кнопки - В пункте миниатюру ListBox

Дело в том, логотип должен быть намного меньше в ListBox, чем в кнопке. Это не создает проблем для изображения логотипа, который автоматически масштабируется. Но размер шрифта не масштабируется автоматически.

Таким образом, мне предложили использовать 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 моей кнопки на объекте версии. Затем автоматически используется DataTemplate.

   <Button 
       x:Name="buttonVersion" 
       Width="300" 
       Height="300" 
       Click="SelectVersionButton_Click" 
       Background="Transparent" 
       Content="{Binding}"> 
      </Button> 

Почему мой логотип не заполняет всю кнопку? Очевидно, что маржи приходят из ниоткуда, и я не могу это объяснить.

Интересно, что если я удалю Width = "175" из дочернего элемента Grid (дочернего элемента ViewBox), то ViewBox полностью заполнит эту кнопку. Однако, размеры шрифта моего логотипа не масштабируется правильно больше, так как эта сетка Ширина похожа на «эталонном размер», что ViewBox следует использовать для масштабирования остального соответствующим образом ...

Заранее спасибо

+0

Вы были правы в своем первом ответе. Думаю, я должен использовать элемент управления, прежде чем я буду обдумывать, как он себя ведет. Удалили ответ, чтобы не смущать кого-либо. – PeterAllenWebb

+0

Я спросил о марже сетки - но это не имело значения, и теперь я вижу, что Тибо удалил эту строку из вопроса - поэтому я удалил свой ответ – ChrisF

ответ

1

Alright , вот как эта проблема была решена:

  1. Удалить Ширина в DataTemplate в сетке
  2. Отрегулируйте шрифт = 175 размеры снова

Мои размеры шрифта были скорректированы для изображения ящика размером 175x175. Изображение ящика - 256х256. Если вы не указали Width = 175 в элементе Grid, кажется, ViewBox вычислит это соотношение благодаря оригинальному размеру изображения (256x256). Кроме того, кнопка 300x300 теперь полностью заполнена изображением ящика, благодаря ViewBox, и размеры шрифта соответственно увеличиваются.

Итак, на шаге 2 мне пришлось отрегулировать размер шрифта для изображения 256x256, а не для изображения 175x175.

Смежные вопросы