У меня есть DataTemplate, который используется в качестве логотипа для описания объекта Version. Логотип - это просто изображение и текст поверх него.
Я должен использовать DataTemplate в 2 местах:
- как содержимое кнопки
- В качестве миниатюры элемента ListBox
Дело в том, что логотип в ListBox должен быть намного меньше, чем в кнопке. Это не создает проблем для изображения логотипа, которое масштабируется автоматически. Но размеры шрифта не масштабируются автоматически.
Поэтому мне предложили использовать 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>
Почему мой логотип не заполняет всю кнопку? Ясно, что поля приходят из ниоткуда, и я не могу этого объяснить.
Что интересно, если я удалю Width = "175" из дочернего элемента Grid (дочернего элемента ViewBox), то ViewBox полностью заполнит кнопку. Однако , размеры шрифта моего логотипа больше не корректно масштабируются, так как эта ширина сетки похожа на «контрольный размер», который ViewBox должен использовать для надлежащего масштабирования остальных ...
Заранее спасибо