Как сделать элемент управления кнопкой видимым при наведении курсора в WPF? - PullRequest
0 голосов
/ 21 декабря 2011

У меня есть требование, когда в окне моя кнопка управления невидима, но когда пользователь случайно наводит указатель мыши на эту область, кнопка становится видимой. Вроде как пасхальное яйцо. Ниже приведен мой код для XAML, но он не работает.

<Button Margin="0,0,20,0" Grid.Row="3" HorizontalAlignment="Right" 
        Name="CopyText" Width="75" Height="25">
    <Button.Style>         
        <Style TargetType="{x:Type Button}">
            <Setter Property="Visibility" Value="Hidden" />
            <Style.Triggers>                 
                <Trigger Property="IsMouseOver" Value="True"> 
                    <Setter Property="Visibility" Value="Visible" />
                </Trigger>
            </Style.Triggers>
        </Style>     
    </Button.Style> 
</Button>

1 Ответ

1 голос
/ 21 декабря 2011

Определите ControlTemplate с рамкой, имеющей прозрачный фон + невидимую кнопку внутри.Затем, наведя указатель мыши на границу, вы можете установить видимость кнопки на Visible.

MSDN говорит о некоторых интересных аспектах видимости: элементы, где Visibility не видна, не участвуют во входных событиях (или командах), не влияют ни наИзмерять или упорядочивать проходы макета, они не находятся в последовательности табуляции и не будут сообщаться при проверке попаданий.

Это объясняет поведение, которое вы заметили.

Тогда, если вы напишите ControlTemplate, кнопка не скрывается снова после нажатия, возможно, потому, что она имеет фокус: это будет иметь некоторый смысл, что сфокусированный элемент не может быть установлен невидимым.Я бы попробовал расфокусировать его в обработчике кликов (фокус на что-то еще).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...