ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

WPF 使用System.Windows.Interactivity交互事件

2020-06-30 18:01:36  阅读:413  来源: 互联网

标签:Interactivity Windows void System RelativeSource TextBox


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>

 

标签:Interactivity,Windows,void,System,RelativeSource,TextBox
来源: https://www.cnblogs.com/dachuang/p/13215171.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有