我需要一个完整的示例如何声明..并在使用它之后定制路由事件。 其实我知道的语法,但我不知道如何使它的工作以及如何使用它 以后。你能给我简单的完整例子吗(VB代码对我来说更好)。 例如,当点击一个按钮以在标签上显示文本时。自定义路由事件示例
1
A
回答
0
这里是我使用的自定义RoutedEvent
一个简单的方法:要触发时的TextBlock
变化(TextChanged事件)的Text
属性动画:
在这种情况下我已经创建了从0派生的类。为了演示的目的,我们将其称为MyCustomTextBlock
。
首先我们定义了RoutedEvent
:
Public Shared ReadOnly TextChangedEvent As RoutedEvent = EventManager.RegisterRoutedEvent("TextChanged", RoutingStrategy.Bubble, GetType(RoutedEventHandler), GetType(MyCustomTextBlock))
我们定义RoutedEeventHandler:
Public Custom Event TextChanged As RoutedEventHandler
AddHandler(ByVal value As RoutedEventHandler)
Me.AddHandler(TextChangedEvent, value)
End AddHandler
RemoveHandler(ByVal value As RoutedEventHandler)
Me.RemoveHandler(TextChangedEvent, value)
End RemoveHandler
RaiseEvent(ByVal sender As Object, ByVal e As RoutedEventArgs)
Me.RaiseEvent(e)
End RaiseEvent
End Event
接下来,阴影Text
财产申报,以便您可以指定一个回调方法:
Public Shared Shadows TextProperty As DependencyProperty = DependencyProperty.Register("Text", GetType(String), MethodBase.GetCurrentMethod().DeclaringType, New FrameworkPropertyMetadata(String.Empty, New PropertyChangedCallback(AddressOf TextPropertyChanged)))
编辑:在上面的DependencyProperty
注册,我使用Reflection
获得调用类型,因为我使用代码片段来注入DependencyProperty
注册调用,它使我的代码段更加动态。你可以用下面的代码替换上面的调用,如果你不喜欢导入Reflection Namespace
:
Public Shared Shadows TextProperty As DependencyProperty = DependencyProperty.Register("Text", GetType(String), GetType(MyCustomTextBlock), New FrameworkPropertyMetadata(String.Empty, New PropertyChangedCallback(AddressOf TextPropertyChanged)))
定义将执行每当Text
价值变动回调方法,提高RoutedEvent
:
Private Shared Sub TextPropertyChanged(ByVal Sender As Object, ByVal e As DependencyPropertyChangedEventArgs)
DirectCast(Sender, MyCustomTextBlock).RaiseEvent(New RoutedEventArgs(MyCustomTextBlock.TextChangedEvent))
End Sub
那是所有的代码,现在让我们在XAML中使用它:
<local:MyCustomTextBlock>
<local:MyCustomTextBlock.Style>
<Style TargetType="local:MyCustomTextBlock">
<Style.Triggers>
<EventTrigger RoutedEvent="local:MyCustomTextBlock.TextChanged">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation To="1.5" Duration="0:0:0.1" Storyboard.TargetProperty="(FrameworkElement.RenderTransform).(TransformGroup.Children)[1].(ScaleTransform.ScaleX)" AutoReverse="True"/>
<DoubleAnimation To="1.5" Duration="0:0:0.1" Storyboard.TargetProperty="(FrameworkElement.RenderTransform).(TransformGroup.Children)[1].(ScaleTransform.ScaleY)" AutoReverse="True"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>
</local:MyCustomTextBlock.Style>
</local:MyCustomTextBlock>
在上面的触发器中,我只是sca将尺寸缩小为TextBlock
,然后再向下,所有这些都在200毫秒内,这给用户一种微妙的手势,文字已经改变,将他们的注意力引向新的价值。
另外,如果您还没有准备好,在你的XAML页面的顶部引用您的装配:
<Window x:Class="MyWindow"
xmlns:local="clr-namespace:MyRoutedEventProject"/>
对于纯朴的缘故,让VisualStudio的钩它给你的。如果您输入xmlns:local=
,则Intellisense应弹出可供选择的命名空间列表。找到你的项目的基础命名空间和插入:
这是一个简单的采用了RoutedEvent
的,但我经常使用一个现实生活中的使用情况。我希望它有帮助。
相关问题
- 1. WPF自定义路由事件问题
- 2. 自定义路由事件失败!
- 3. WPF路由事件,订阅自定义事件
- 4. 自定义路由
- 5. WP7中的路由事件自定义控件
- 6. 绑定来自主视图实例的路由器事件
- 7. jQuery的JTable中自定义点击事件操作路由
- 8. Interactivity.EventTrigger不订阅自定义路由事件
- 9. 处理隧道自定义路由事件
- 10. EmberJs:自定义事件中的路由器没有收到
- 11. WPF XAML IntelliSense不自定义路由事件处理程序
- 12. WPF自定义路由事件 - 如何取消订阅?
- 13. 如何创建自定义路由事件? WPF c#
- 14. WPF:自定义路由事件与额外的信息
- 15. WPF - 声明一个自定义路由事件并收听它
- 16. 如何从DataTemplate提取自定义的路由事件?
- 17. Rails-4自定义路由
- 18. 自定义路由在MVC3
- 19. Swashbuckle的自定义路由
- 20. MVC C#自定义路由
- 21. MVC 4:自定义路由
- 22. ASP.NET MVC4自定义路由
- 23. ASP.Net MVC4自定义路由
- 24. Symfony自定义路由
- 25. asp.net MVC自定义路由
- 26. 自定义路由Rails中
- 27. 瓶自定义路由
- 28. 自定义路由和i18n
- 29. Rails 4 - 自定义路由
- 30. ZF2自定义路由
'Button.Click'已经是'RoutedEvent'了。如果你想给一个'Label'元素指定一个文本值,只需要对该按钮的'Click'事件作出响应......? – XamlZealot
其实我不想给一个Label分配一个文本值。我只需要一个完整的例子来说明如何声明和使用它之后的自定义路由事件。 – apollon