2014-10-17 35 views
0

我已经自定义按钮控制FancyButton(重用显然创建)这样的下面还有一些后面的代码(主要是依赖属性):当触发自定义控制设置Storyboard.TargetName,抛出异常

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

它发生了什么变化以及如何使其工作?

+0

这是因为命名约定,请设置弹出后重名称到别的东西,例如:Pupup1。 – 2014-10-17 09:28:58

+0

感谢提示@AshokRathod,但它没有帮助,仍然是同样的问题,下面你我也改变了弹出式名称=弹出式x:名称,结果相同。 – 2014-10-17 09:51:53

+0

请将控制名称更改为popup1,因为它与系统保留字冲突。 – 2014-10-17 09:54:32

回答

1

解决!

而不是使用我用Storyboard.Target和适当如下结合Storyboard.TargetName附加属性:

<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> 

干杯