2014-09-24 3 views
0

Следующий шаблон работает нормально, если пользователь нажимает Введите, хотя я хочу, чтобы команда срабатывала, когда TextBox теряет фокус. Как я могу это сделать?Как запустить команду textbox при потере фокуса в WPF?

Следующая моя 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> 

ответ

4

Если вы не используете какие-либо рамки MVVM вы могли бы использовать InvokeCommandAction из System.Windows.Interactivity выполнить команду, когда событие вызывается

<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: я = "http://schemas.microsoft.com/expression/2010/interactivity"

+1

Спасибо, я не использую структуру MVVM и работал отлично. – Bob

Смежные вопросы