• event handler in DataTemplate


    在user control中,给data template加event handler很容易,因为user control的xaml是与cs编译成一个类, 有x:class tag. 但是在custom control  中,必须代码加入,而且要用visual tree找到data template中的element(这是独立的dataTemplate情况),或者在onApplyTemplate中找到control,再把event handlers加入。

    还有给data template中element 抛event , 外面的event handler能通过originalSource获得原始event源,但是name失去了。

    总体来说,用user control 容易些,custom control 更依赖代码。但是user control密切与界面相关,不容易重写,custom control与界面相对独立,只是要求一些特定templatePart .重用性强,一般来说 有自定义content的时候就会用customcontrol

    那么如何处理data template中的event handler,四种方法:.

    1.  If the template isn't reused in multiple places, attach the handler directly to the button.
    2.  Use the routed nature of events in WPF to catch the click event on an ancestor control, such as the List itself. If you have more than one button in the template, you'll have to figure out how to differentiate between sources of the event.
    3.  Raise a more specific event from a click handler on the button.
    4.  Use a command instead of an event.

    使用一个routed command,用command parameter传入参数,是一个挺好的方法。

    <Button x:Name="cmdDeleteItem" Width="59" Height="21.277" Content="Delete"
    Command=”x:Static Mycontrol.deleteCommand” CommandParameter=”{Binding Id}”/>

  • 相关阅读:
    原型模式
    单例模式-2(注册式单例)
    单例模式-1(懒汉式、饿汉式)
    PBKDF2加密的实现
    vue中获取客户端IP地址
    微信公众平台,监听用户输入及事件
    详解二叉树的遍历-前中后序遍历/层序遍历-递归/迭代
    联想小新pro关机变慢的解决办法
    MySQL自学笔记系列
    MySQL入门-首先搞清楚【数据类型】
  • 原文地址:https://www.cnblogs.com/liangouyang/p/1348330.html
Copyright © 2020-2023  润新知