2017-08-11 4 views
1

Je souhaite lier une Icommand à un événement de xctk: IntegerUpDown. L'événement est 'LostMouseCapture'Liaison d'une commande à un événement 'LostMouseCapture' de xctk: IntegerUpDown

En XAML:

<xctk:IntegerUpDown Name="MinColor" ClipValueToMinMax="True" Grid.Column="2" 
                Minimum="0" Maximum="{Binding Path=MinColorMaxValue}" Value="{Binding Path=MinColorValue}" Increment="1" 
                PreviewTextInput="IntegerUpDown_PreviewTextInput" DataObject.Pasting="IntegerUpDown_Pasting" PreviewKeyDown="IntegerUpDown_PreviewKeyDown" > 
                <i:Interaction.Triggers> 
                 <i:EventTrigger EventName="LostMouseCapture"> 
                  <i:InvokeCommandAction Command="{Binding Path=ValueCommand}" CommandParameter="{Binding FileName}"/> 
                 </i:EventTrigger> 
                </i:Interaction.Triggers> 
               </xctk:IntegerUpDown> 

En ViewModel:

private DelegateCommand m_ValueCommand = null;   

    public ICommand ValueCommand 
    { 
     get 
     { 
      if (m_ValueCommand == null) 
       m_ValueCommand = new DelegateCommand(new Action<object>(ExecuteValueCommand), 
        new Predicate<object>(CanExecuteValueCommand)); 
      return m_ValueCommand; 
     } 
    } 

    public bool CanExecuteValueCommand(object sender) 
    { 
     return true; 
    } 

    public void ExecuteValueCommand(object sender) 
    { 
    } 

Quand je mets une certaine valeur dans IntegerUpdown et cliquez à l'extérieur, je veux appeler 'ValueCommand'. Existe-t-il une solution à ça?

Répondre

1

Appelez votre commande à partir du poseur de votre propriété MinColorValue source:

private int _minColorValue; 
public int MinColorValue 
{ 
    get { return _minColorValue; } 
    set 
    { 
     _minColorValue = value; 
     ValueCommand.Execute(FileName); 
    } 
} 

Ou essayer de gérer l'événement LostKeyboardFocus ou LostFocus:

<i:EventTrigger EventName="LostKeyboardFocus"> 
+0

Merci beaucoup. LostKeyboardFocus a fonctionné. – SAT