zoukankan      html  css  js  c++  java
  • WPF 使用System.Windows.Interactivity交互事件

    1.引用System.Windows.Interactivity,在右键,添加引用->扩展里找到此dll添加

    XAML中使用该dll

     xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"

    Triggers 示例1

    <!-- TextBox控件的获得焦点、失去焦点事件 -->
    <TextBox Text="Test">
      <i:Interaction.Triggers>
        <i:EventTrigger EventName="LostFocus">
          <i:InvokeCommandAction Command="{Binding RelativeSource={RelativeSource AncestorType=Window},Path=DataContext.OnTextLostFocus}"
    CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorLevel=1, AncestorType={x:Type TextBox}}}"/>
        </i:EventTrigger>
        <i:EventTrigger EventName="GotFocus">
          <i:InvokeCommandAction Command="{Binding RelativeSource={RelativeSource AncestorType=Window},Path=DataContext.OnTextGotFocus}"
    CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorLevel=1, AncestorType={x:Type TextBox}}}"/>
        </i:EventTrigger>
      </i:Interaction.Triggers>
    </TextBox>

    由于VS中不支持System.Windows.Interactivity的智能提示,经常要查阅这个EventTrigger还能触发哪些方法,所有EventName的列表如下:

    MSDN中Grid Events https://msdn.microsoft.com/en-us/library/system.windows.controls.grid_events(v=vs.110).aspx

    Behavior 示例2

    作用:当文本框中输入的网址改变时,触发的事件

    public class TextBoxBindingUpdateOnEnterBehaviour : Behavior<TextBox>
    {
      protected override void OnAttached()
      {
        AssociatedObject.KeyDown += OnTextBoxKeyDown;
      }

      protected override void OnDetaching()
      {
        AssociatedObject.KeyDown -= OnTextBoxKeyDown;
      }

      private void OnTextBoxKeyDown(object sender, KeyEventArgs e)
      {
        if (e.Key == Key.Enter)
        {
          var txtBox = sender as TextBox;
          txtBox.GetBindingExpression(TextBox.TextProperty).UpdateSource();
        }
      }
    }

    xaml
    xmlns:behaviours=“clr-namespace:CefSharp.MinimalExample.Wpf.Behaviours”

    <TextBox x:Name="txtBoxAddress" Text="{Binding Address, ElementName=Browser, FallbackValue=www.google.com}" Grid.Column="2" FontSize="12" BorderBrush="Gray" BorderThickness="1">
    <i:Interaction.Behaviors>
    <behaviours:TextBoxBindingUpdateOnEnterBehaviour />
    </i:Interaction.Behaviors>
    </TextBox>

  • 相关阅读:
    从编程到入侵
    编程实现盗2005 Beta2版QQ
    Justin Frankel:Winamp的反斗奇星
    用安静的热情征服联合国
    我和试用期员工之间的故事
    Sogou输入法之父给我们的启示
    《ATL开发指南》的一个值得商榷的地方
    厦门PX项目迁址:意义有限的进步
    探析项目主导型的IT业的人员需求变化及其应对办法
    今天,影响了一位试用期员工的去留
  • 原文地址:https://www.cnblogs.com/dachuang/p/13215171.html
Copyright © 2011-2022 走看看