我正在尝试创建一个基本上是ContentControl
的自定义控件,其中包含一些以特定方式打开的特殊模板。为了控制这个,我希望有一个简单的IsFlyoutOpen
属性来控制打开/关闭。我试图继承ContentControl
并添加依赖项属性:
public class FlyoutContentControl : ContentControl
{
public bool IsFlyoutOpen
{
get => (bool)GetValue(IsFlyoutOpenProperty);
set => SetValue(IsFlyoutOpenProperty, value);
}
// Using a DependencyProperty as the backing store for IsFlyoutOpen. This enables animation, styling, binding, etc...
public static readonly DependencyProperty IsFlyoutOpenProperty =
DependencyProperty.Register("IsFlyoutOpen", typeof(bool), typeof(FlyoutContentControl),
new PropertyMetadata(false));
}
这很好,但是当我创建一个针对此类型的内容模板时,它不会让我模板绑定到它。这是我的(精简)模板:
<ControlTemplate x:Key="CtFlyoutPanel" TargetType="{x:Type graphicElements:FlyoutContentControl}">
<Grid>
<Border x:Name="RectHelpClip" Background="Transparent">
<Border Background="{StaticResource BrHelpBackground}" RenderTransformOrigin="1,0">
<Border.Style>
<Style TargetType="Border">
<Style.Triggers>
<DataTrigger Binding="{TemplateBinding IsFlyoutOpen}" Value="True">
...animations
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
</Border>
</Border>
... other stuff
</Grid>
</ControlTemplate>
我错过了什么?为什么我不能在新房产上触发?