2014-10-30 2 views
0

Мой вопрос довольно прост, потому что он работает в других случаях, но не с событием с двойным щелчком мыши. Я хочу сделать редактируемые элементы табуляции, и это почти сделано. Может быть, код будет прояснить ситуацию:MouseDoubleClick маршрутизированное событие не запускается в EventTrigger

<StackPanel Orientation="Horizontal"> 
     <TextBox x:Name="HeaderEditMode" Text="{Binding Header, Mode=TwoWay}" Visibility="Collapsed" /> 
     <TextBlock x:Name="HeaderDisplayMode" Text="{Binding Header, Mode=TwoWay}" /> 
     <StackPanel.Triggers> 
      <EventTrigger RoutedEvent="MouseDoubleClick"> 
       <BeginStoryboard> 
        <Storyboard> 
         <ObjectAnimationUsingKeyFrames Storyboard.TargetName="HeaderEditMode" 
                 Storyboard.TargetProperty="Visibility"> 
          <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Visible}" /> 
         </ObjectAnimationUsingKeyFrames> 
         <ObjectAnimationUsingKeyFrames Storyboard.TargetName="HeaderDisplayMode" 
                 Storyboard.TargetProperty="Visibility"> 
          <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Collapsed}" /> 
         </ObjectAnimationUsingKeyFrames> 
        </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger> 
      <EventTrigger RoutedEvent="MouseLeave"> 
       <BeginStoryboard> 
        <Storyboard> 
         <ObjectAnimationUsingKeyFrames Storyboard.TargetName="HeaderEditMode" 
                 Storyboard.TargetProperty="Visibility"> 
          <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Collapsed}" /> 
         </ObjectAnimationUsingKeyFrames> 
         <ObjectAnimationUsingKeyFrames Storyboard.TargetName="HeaderDisplayMode" 
                 Storyboard.TargetProperty="Visibility"> 
          <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Visible}" /> 
         </ObjectAnimationUsingKeyFrames> 
        </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger> 
     </StackPanel.Triggers> 
    </StackPanel> 

Если изменить MouseDoubleClick к, например, к MouseDown или MouseEnter он прекрасно работает. Какие-либо предложения?

+0

'StackPanel' не поддерживает событие MouseDoubleClick. Он реализован в классе 'Control'. Вы можете сделать 'Control.MouseDoubleClick', но тогда вам все равно понадобится' Control' для запуска этого события – dkozl

+0

Это полезно. Хорошо, я попытаюсь найти sth, что тригер это событие. Вы можете завершить это нажатием кнопки, но затем вы потеряете все стили, которые я использовал: /. Возможно, тогда это станет прозрачным. – kjubersson

+1

Извините, я ввел вас в заблуждение. Просто проверено и ['Control.MouseDoubleClick'] (http://msdn.microsoft.com/en-us/library/system.windows.controls.control.mousedoubleclick (v = vs.110) .aspx) является прямым маршрутизируемым событием что означает, что он срабатывает ** только на самом «контроле» **, поэтому вы не можете его поймать на «StackPanel» в любом случае – dkozl

ответ

0

Попробуйте обернуть TextBlock в ContentControl и приложите к нему вместо этого триггер MouseDoubleClick.

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