У меня есть 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 следует использовать для масштабирования остального соответствующим образом ...
Заранее спасибо
Вы были правы в своем первом ответе. Думаю, я должен использовать элемент управления, прежде чем я буду обдумывать, как он себя ведет. Удалили ответ, чтобы не смущать кого-либо. – PeterAllenWebb
Я спросил о марже сетки - но это не имело значения, и теперь я вижу, что Тибо удалил эту строку из вопроса - поэтому я удалил свой ответ – ChrisF