是否有可能做这样的事情(见下面的代码)?我尝试了不同的方法,但都没有奏效。它是对 TemplateBinding 的限制吗?我不想通过 Staticressources 设置 ContentTemplates(这可行),因为控件应该在运行时更改模板。我怎样才能做到这一点?
<ControlTemplate x:Key="myControlTemplate" TargetType="{x:Type controls:mycontrol}">
<Grid x:Name="root" Margin="{TemplateBinding Margin}" >
<ContentPresenter Opacity="0" x:Name="Content" ContentTemplate="{TemplateBinding MinimizedContentTemplate}">
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="ControlState" Value="Maximized">
<Setter TargetName="Content" Property="ContentTemplate" Value="{TemplateBinding MaximizedContentTemplate}"/>
</Trigger>
</ControlTemplate.Triggers>
<Style TargetType="{x:Type controls:mycontrol}">
<Setter Property="ControlState" Value="Minimized" />
<Setter Property="MaximizedContentTemplate" Value="{StaticResource DefaultMaxContentTemplate}" />
<Setter Property="MinimizedContentTemplate" Value="{StaticResource DefaultMinContentTemplate}" />
<Setter Property="Template" Value="{StaticResource myControlTemplate}" />
</Style>