Если я устанавливаю ContentTemplate
непосредственно в Content Presenter, он работает нормально, если я использую Style
, он переопределяется:
Внутри кнопок ControlTemplate
:
<ContentPresenter ContentTemplate="{StaticResource Default}"/>
против
<ContentPresenter Style="{StaticResource MyContentStyle}"/>
Работает нормально:
<DataTemplate x:Key="Default">
<StackPanel>
<TextBlock>this is the</TextBlock>
<TextBlock>default view</TextBlock>
<TextBlock Text="{Binding}"></TextBlock>
</StackPanel>
</DataTemplate>
<ControlTemplate x:Key="ButtonTemplate" TargetType="Button">
<Grid Margin="20">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"
ContentTemplate="{StaticResource Default}"
/>
</Border>
</Grid>
</ControlTemplate>
</Grid.Resources>
<Button Template="{StaticResource ButtonTemplate}">Click Me</Button>
По умолчанию DataTemplate
не применяется, говорится, переопределено в визуальном дереве.это вид по умолчанию
<Style x:Key="MyContentStyle" TargetType="ContentPresenter">
<Setter Property="ContentTemplate" Value="{StaticResource Default}"/>
</Style>
<ControlTemplate x:Key="ButtonTemplate" TargetType="Button">
<Grid Margin="20">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"
Style="{StaticResource MyContentStyle}"
/>
</Border>
</Grid>
</ControlTemplate>
</Grid.Resources>
<Button Template="{StaticResource ButtonTemplate}">Click Me</Button>
Если я использую ContentPresenter
независимо от кнопки, он работает нормально:
<Grid>
<ContentPresenter Style="{StaticResource MyContentStyle}" Content="Work fine even with Style" />
</Grid>