Как убрать границу с нажатой кнопки в silverlight? - PullRequest
2 голосов
/ 05 марта 2010

У меня есть кнопка и изображение внутри нее в моем пользовательском элементе управления Silverlight.
Когда я нажимаю на кнопку, к ней добавляется граница.
Можно ли удалить рамку с кнопки при ее нажатии?
Спасибо.

1 Ответ

3 голосов
/ 05 марта 2010

Для этого вам нужно настроить шаблон Button. Сначала возьмите существующий шаблон (в Blend this, где вы используете Edit Copy of Template), который вы можете получить из документации, если у вас есть только Visual Studio. Стили и шаблоны кнопок .

Скопируйте весь стиль и поместите его в ресурс где-нибудь в вашем UserControl или, что еще лучше, в собственный файл ResourceDictionary и включите в ресурсы UserControl с помощью MergedDictionaries: -

NoFocusRectangleButtonStyle.xaml: -

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Style x:Key="NoFocusRectangleButtonStyle" TargetType="Button">
        <!-- copy of style contents from documentation -->
    </Style>
</ResourceDictionary>

В вашем UserControl: -

<UserControl .... >
   <UserControl.Resources>
     <ResourceDictionary>
       <ResourceDictionary.MergedDictionaries>
          <ResourceDictionary Source="NoFocusRectangleButtonStyle.xaml" />
        </ResourceDictionary.MergedDictionaries>
        <!-- other local resources -->
     </ResourceDictionary>
   </UserControl.Resources>
   <Grid x:Name="LayoutRoot" ...>

     <Button Style="{StaticResource NoFocusRectangleButtonStyle}">
        <Image Source="yourimage.png" />
     </Button>

   </Grid>
</UserControl>

Теперь вам просто нужно настроить Template в скопированном стиле, чтобы удалить Фокус Rectangle. Вы найдете его в нижней части шаблона, удалите его. Затем посмотрите дальше до конца набора VisualStateGroups, вы увидите VisualState под названием «Фокус», удалите Storyboard, который он содержит, и все готово.

...