在触发器中的自定义控件上设置Storyboard.TargetName时,抛出异常

时间:2014-10-17 09:20:18

标签: wpf storyboard

我有自定义按钮控件FancyButton(显然是为了重用而创建),如下所示,后面还有一些代码(主要是依赖属性):

<Button x:Class="Views.Controls.FancyButton"
         ...... >

    <Button.ContentTemplate>
        <DataTemplate>
            ....
        </DataTemplate>
    </Button.ContentTemplate>
</Button>

下面,使用这个控件,触发器应该开始在鼠标按下时切换弹出属性,而不是它我面临的异常是

  

&#39;弹出&#39;在名称范围内找不到名称   &#39; Views.Controls.FancyButton&#39;

<controls:FancyButton x:Name="ChooseButton" ServerConnection="{Binding CurrentServer}">
<Button.Triggers>
    <EventTrigger SourceName="ChooseButton" RoutedEvent="UIElement.PreviewMouseLeftButtonUp">
        <BeginStoryboard>
            <Storyboard>
                <BooleanAnimationUsingKeyFrames Storyboard.TargetName="Popup" Storyboard.TargetProperty="(IsOpen)">
                    <DiscreteBooleanKeyFrame KeyTime="00:00:00" Value="True"/>
                </BooleanAnimationUsingKeyFrames>
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
</Button.Triggers>
</controls:FancyButton >
<Popup Placement="Bottom" Name="Popup">
    ..........
</Popup>

以前的解决方案 - 直接使用Button控件 - 按预期工作但我有一个XAML重复。

它有什么变化以及如何使其发挥作用?

1 个答案:

答案 0 :(得分:1)

解决!

我没有使用Storyboard.TargetName附加属性,而是使用了Storyboard.Target和正确的绑定,如下所示:

<Button.Triggers>
<EventTrigger SourceName="ChooseButton" RoutedEvent="UIElement.PreviewMouseLeftButtonUp">
    <BeginStoryboard>
        <Storyboard>
            <BooleanAnimationUsingKeyFrames Storyboard.Target="{Binding ElementName=popup1}" Storyboard.TargetProperty="(IsOpen)">
                <DiscreteBooleanKeyFrame KeyTime="00:00:00" Value="True"/>
            </BooleanAnimationUsingKeyFrames>
        </Storyboard>
    </BeginStoryboard>
</EventTrigger>

干杯