Свойство NPF DataTemplate набор в контенте
-
29-09-2019 - |
Вопрос
Новые для WPF и имеют вкладки и в каждой вкладке Контент представлен в изогнутой угловой панели / окне / Alky YouWannacallit. Я не был уверен, как это сделать (стиль, ControlTemplate), но решил пройти путь на DataTemplate.
Так что теперь у меня есть эта таблица данных:
<DataTemplate x:Key="TabContentPresenter" >
<Border Margin="10"
BorderBrush="{StaticResource DarkColorBrush}"
CornerRadius="8"
BorderThickness="2"
Grid.Row="0"
Padding="5"
Background="{TemplateBinding Background}">
<ContentPresenter Content="{Binding}" />
</Border>
</DataTemplate>
Как вы можете видеть с фоновым свойством, я не хочу устанавливать цвет фона в контент, но не знаю, как. Вот я использую это.
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="120"/>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<ContentControl ContentTemplate="{StaticResource TabContentPresenter}" Background="White">
<!-- Something Here -->
</ContentControl>
<ContentControl ContentTemplate="{StaticResource TabContentPresenter}" Grid.Row="1" Background="Blue">
<!-- Something Here -->
</ContentControl>
</Grid>
Использование данных DataTemplate неправильно здесь или есть в другом пути?
Возможно, я мог бы установить фон прямо на содержание и изменение от прокладки в шаблоне MTHE в маржинать в контент, но в некоторых спустях ситуациях, которые не будут работать, и это приятнее только придеться только один раз.
РЕДАКТИРОВАТЬ:
Согласно совету я изменился на ControlTemplate, а также положить его в стиль. Это решает справочную проблему, но создает больше. Теперь контент не появится. Я читаю в блоге здесь Это положив Targettype, решает это, но это не решило мою проблему. Код выглядит так, как сейчас выглядит, а также изменил ContentControl для использования стиля вместо шаблона.
<Style x:Key="TabContentPresenter" TargetType="ContentControl" >
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ContentControl">
<Border Margin="10"
BorderBrush="{StaticResource DarkColorBrush}"
CornerRadius="8"
BorderThickness="2"
Grid.Row="0"
Background="{TemplateBinding Background}">
<ContentPresenter Content="{Binding}" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Решение
Используйте ControlTemplate вместо DataTemplate
<ControlTemplate x:Key="TabContentPresenter">
<Border Margin="10"
CornerRadius="8"
BorderThickness="2"
Grid.Row="0"
Padding="5"
Background="{TemplateBinding Background}">
<ContentPresenter Content="{Binding}"/>
</Border>
</ControlTemplate>
Используйте шаблон вместо CenterTemplate
<ContentControl Background="Green" Template="{StaticResource TabContentPresenter}"/>
Другие советы
Может быть, потому, что TemplateBinding
не работает с dataTemplate. Проверьте этот вопрос для получения подробной информации.
Даже если это работает, все, что вам нужно, это ControlTemplate И не таблица данных.