【问题标题】:When setting Storyboard.TargetName on custom control in trigger, throws exception在触发器中的自定义控件上设置 Storyboard.TargetName 时,抛出异常
【发布时间】:2014-10-17 09:20:17
【问题描述】:

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

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

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

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

在名称范围内找不到“弹出”名称 'Views.Controls.FancyButton'。

<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 重复。

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

【问题讨论】:

  • 这是因为命名约定,请在将Popup名称设置为其他名称后尝试,例如Popup1。
  • 感谢@AshokRathod 的提示,但它没有帮助,仍然是同样的问题,跟着你我也将 Popup Name= 更改为 Popup x:Name,结果相同。
  • 由于与系统保留字冲突,请将控件名称改为popup1。
  • 是的,我只是在你第一次回答后才这样做,抛出了同样的异常

标签: wpf storyboard


【解决方案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>

干杯

【讨论】:

    猜你喜欢
    • 2020-06-07
    • 2011-10-06
    • 1970-01-01
    • 2012-10-28
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 2017-04-20
    相关资源
    最近更新 更多