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>

  • 相关阅读:
    个人兴趣与公司业务的关系
    分析能力的8个等级(转)
    DSL应用的优点
    架构师应具备的概要技能
    Cheetah
    不能运行VS2005的DSL Tool例子
    推荐:原型工具GUI Design Studio
    Viewpoints 1.0 for Visual Studio .NET 2008
    原创故事 - 不死鸡和不死牛的故事
    Antlr构建表达式引擎
  • 原文地址:https://www.cnblogs.com/dachuang/p/13215171.html
Copyright © 2011-2022 走看看