2016-10-19 2 views
-1

Кнопка здесь видна только тогда, когда указатель мыши зависает над страницей. Я пытаюсь проверить (нажмите) кнопку через мой код и его провал. Я попробовал варианты, такие как зависание, а затем щелкнуть, но не работает. Для информации: Эта кнопка находится внутри StackPanel (скажем, A), которая имеет то же свойство, что и кнопка (видимая только после наведения мыши). Эта сетка снова встроена внутри Grid B, которая видна.Нажмите кнопку WPF, которая видна при наведении указателя мыши

Xaml:

<StackPanel Grid.Row="0" Grid.Column="1" Name="CenterButtons" Margin="10,5" VerticalAlignment="Center" Orientation="Horizontal"> 
        <StackPanel.Style> 
         <Style TargetType="{x:Type StackPanel}" > 
          <Style.Triggers> 
           <DataTrigger Binding="{Binding ElementName=CenterButtons, Path=(Grid.Row)}" Value="0"> 
            <Setter Property="HorizontalAlignment" Value="Center" /> 
           </DataTrigger> 
           <DataTrigger Binding="{Binding ElementName=CenterButtons, Path=(Grid.Row)}" Value="1"> 
            <Setter Property="HorizontalAlignment" Value="Left" /> 
           </DataTrigger> 
          </Style.Triggers> 
         </Style> 
        </StackPanel.Style> 
        <Button Name="DeletePageButton" Command="{Binding MarkForDeletionCommand}" Style="{StaticResource NoBorderVectorButtonStyle}" 
           ToolTip="{x:Static resx:DocPdfPages.ToolTipMarkForDeletion}" 
           controls:AdditionalAttachedProperties.GeometryData="{DynamicResource DeleteGlyph}"/> 
        <Button Name="RotateCounterClockwiseButton" Command="{Binding RotateLeftCommand}" 
          Style="{StaticResource NoBorderVectorButtonStyle}" 
          ToolTip="{x:Static resx:DocPdfPages.ToolTipRotatePageLeft}" 
          controls:AdditionalAttachedProperties.GeometryData="{DynamicResource RotateGlyph}"> 
         <Button.LayoutTransform> 
          <TransformGroup> 
           <ScaleTransform ScaleX="-1" /> 
          </TransformGroup> 
         </Button.LayoutTransform> 
        </Button> 
</StackPanel> 
+0

Зачем вам нужно тестировать? Одной из веских причин использования кнопок 'Command' на кнопках является то, что вы можете вызывать команду без взаимодействия с пользовательским интерфейсом. – GEEF

+0

Хорошо. Я понимаю, но вы можете мне помочь, как мне это сделать. но для этого так сосать :( – Reema

+0

Не беспокойтесь, позвольте мне написать ответ очень быстро. – GEEF

ответ

0

Одним из преимуществ для использования Command вместо Click обработчиком является то, что вы можете вручную вызвать Command из кода, без необходимости взаимодействия UI. Это полезно для тестирования таких сценариев, как ваш.

Вы найдете Command s на своем DataContext. После этого вы можете вызвать его так:

 ICommand deletionCommand = DataContext.MarkForDeletionCommand; 
     if (deletionCommand.CanExecute(null)) 
      deletionCommand.Execute(null); 

Ваши команды не принимает никаких параметров, так что вы должны получить правильное поведение, давая ему null для параметра.

+0

Прохладный. Получил. lemme попробуйте. Будет обновлен. – Reema

+0

Я не уверен, что ваш DataContext для Button, но независимо от того, какой элемент DataContext вашей кнопки (ViewModel, содержащий элемент управления и т. Д.) - это то, где вы найдете команды – GEEF

+0

. Я действительно получаю вашу мысль, но у меня есть другой вопрос. Это может быть и глупо. Xaml-файл находится на своем месте, и я пишу этот тестовый пример в другом файле (хотя оба они полностью сопоставляются друг с другом). Теперь, как я могу использовать DataContext из файла Xaml для вызова c ommand на кнопке (которая должна быть wriiten в файле test.cs) – Reema

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