2014-10-17 31 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> 

乾杯