2012-05-07 110 views
2

我在使用XAML設計器時遇到了一些問題。未找到UserControl中的自定義RoutedEvent

我有一個用戶控件,它代表一個自定義的ProgressBar:只是一個基於狀態的具有某種顏色的旋轉圓。 它擴展了UserControl,我已經將本地命名空間添加到XAML文件並將其命名爲「本地」。

<UserControl x:Class="MyControls.ProgressControl" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:MyControls"> 

在代碼隱藏我已經創建了一個自定義事件,像這樣:

public static readonly RoutedEvent NotStartedEvent = EventManager.RegisterRoutedEvent("NotStartedEvent",RoutingStrategy.Bubble,typeof(RoutedEventHandler),typeof(ProgressControl)); 

// .NET wrapper 
public event RoutedEventHandler NotStarted 
{ 
    add { AddHandler(NotStartedEvent, value); } 
    remove { RemoveHandler(NotStartedEvent, value); } 
} 

在我的XAML文件我有一個EventTrigger掛鉤一些動畫:

<UserControl.Triggers> 
    <EventTrigger RoutedEvent="local:ProgressControl.NotStartedEvent"> 
     <StopStoryboard BeginStoryboardName="rotateAnimation"/> 
     <BeginStoryboard Storyboard="{StaticResource notStartedStateAnimation}"/> 
    </EventTrigger> 
</UserControl.Triggers> 

然而,這給我一個錯誤:在'UserControl'類型中找不到事件'NotStartedEvent'。

我搜索了網頁,但找不到我做錯了,它一定是一些愚蠢的細節。它是例如因爲EventTrigger在UserControl.Triggers下?

我已經嘗試清理和重建項目多次,這工作正常。只有XAML設計者給我這個錯誤。

回答

5

試試這個:

<UserControl.Triggers> 
    <EventTrigger RoutedEvent="{x:Static local:ProgressControl.NotStartedEvent}"> 
     <StopStoryboard BeginStoryboardName="rotateAnimation"/> 
     <BeginStoryboard Storyboard="{StaticResource notStartedStateAnimation}"/> 
    </EventTrigger> 
</UserControl.Triggers> 
+0

謝謝,沒有的伎倆!我曾嘗試過{x:local ProgressControl.NotStartedEvent},但那不起作用,很高興這是正確的語法。 – Davio

+0

沒問題...我也有這麼多問題^^ – webber2k6