找不到UserControl中的自定义RoutedEvent

时间:2012-05-07 13:01:16

标签: c# wpf xaml user-controls routedevent

我遇到了XAML设计师的一些问题。

我有一个表示自定义ProgressBar的UserControl:只是一个基于状态的一些颜色的旋转圆圈。 它扩展了UserControl,我将本地命名空间添加到XAML文件中,并将其命名为“local”。

<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设计师给我这个错误。

1 个答案:

答案 0 :(得分:5)

试试这个:

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