• 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>

  • 相关阅读:
    10 个你需要了解的 Linux 网络和监控命令
    U盘安装 bt5
    SpringCloud RabbitMQ 使用
    两个大数相乘笔试题目
    activemq 话题模式(三)
    activemq 队列模式(二)
    activemq 安装 (一)
    安装mysql5.7时缺少my.ini文件
    linux 远程rsa 登录配置 文件 /etc/ssh/sshd_config
    java -jar 解决占用终端问题
  • 原文地址:https://www.cnblogs.com/dachuang/p/13215171.html
Copyright © 2020-2023  润新知