如何在WPF中失去焦点时触发文本框命令?

时间:2014-09-24 13:45:30

标签: c# wpf xaml

如果用户按 Enter ,以下模板可以正常工作,尽管我希望在TextBox失去焦点时触发命令。我怎样才能做到这一点?

以下是我的TextBox模板

<DataTemplate x:Key="PhantomNameEditTemplate">          
    <TextBox Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}">
        <TextBox.InputBindings>                 
            <KeyBinding Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=DataGrid}, Path=DataContext.RenameCommand}" CommandParameter="{Binding}" Key="Enter" />
        </TextBox.InputBindings>
    </TextBox>
</DataTemplate>

1 个答案:

答案 0 :(得分:5)

如果您不使用任何MVVM框架,可以使用System.Windows.Interactivity中的InvokeCommandAction在触发事件时执行命令

<TextBox ...>
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="LostFocus">
            <i:InvokeCommandAction 
                Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=DataGrid}, Path=DataContext.RenameCommand}" 
                CommandParameter="{Binding}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
</TextBox>

您需要添加对System.Windows.Interactivity的引用并在XAML中添加命名空间:

  

的xmlns:I =&#34; HTTP://schemas.microsoft.com/expression/2010/interactivity"