Windows Темы ButtonChrome Граница - PullRequest
1 голос
/ 29 июля 2010

Я создал свою собственную кнопку на основе icrosoft_Windows_Themes2: ButtonChrome.Я хочу избавиться от границы по умолчанию, и я попытался установить ее на ноль или прозрачную, но все равно я получаю белую рамку.

Вот моя разметка:

<Microsoft_Windows_Themes2:ButtonChrome x:Name="ibAero" Visibility="Collapsed" SnapsToDevicePixels="true"  Height="{TemplateBinding Height}" Width="{TemplateBinding Width}" RoundCorners="True" Background="{TemplateBinding Background}" BorderBrush="Transparent" RenderMouseOver="{TemplateBinding IsMouseOver}" RenderPressed="{TemplateBinding IsPressed}" OverridesDefaultStyle="True">
    <Border x:Name="bd" CornerRadius="10" BorderThickness="1" BorderBrush="{Binding ElementName=IB, Path=BorderBrush}">
        <StackPanel Orientation="Horizontal" Margin="8,1,5,1">
            <TextBlock Text="{Binding ElementName=IB, Path=Text}" Foreground="{Binding ElementName=IB, Path=TextForeground}" Margin="{Binding ElementName=IB, Path=TextMargin}" VerticalAlignment="Center"/>
        </StackPanel>
    </Border>
</Microsoft_Windows_Themes2:ButtonChrome>

РЕДАКТИРОВАТЬ:

Хорошо.Я изменил разметку так:

<Border x:Name="ibAero" Visibility="Collapsed" Height="{TemplateBinding Height}" Width="{TemplateBinding Width}" CornerRadius="3" BorderThickness="1" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}">
    <StackPanel x:Name="ibAeroPanel" Orientation="Horizontal" Margin="8,1,5,1">
        <Image Source="{Binding ElementName=IB, Path=Image}" Width="{Binding ElementName=IB, Path=ImageWidth}" Height="{Binding ElementName=IB, Path=ImageHeight}"/>
        <TextBlock Text="{Binding ElementName=IB, Path=Text}" Foreground="{Binding ElementName=IB, Path=TextForeground}" Margin="{Binding ElementName=IB, Path=TextMargin}" VerticalAlignment="Center"/>
    </StackPanel>
</Border>

Как мне установить стиль по умолчанию в моем usercontrol?

Ответы [ 2 ]

1 голос
/ 10 июня 2011

Ответ на эту проблему опубликован Meleak по этой ссылке: Как удалить границу ButtonChrome (при определении шаблона границы)?

Причина, по которой вы получаете эту белую рамкупотому что он добавлен IN CODE в элемент управления ButtonChrome.НЕТ СПОСОБА достичь решения этой проблемы с помощью шаблонов.Единственный способ удалить границу - написать свою собственную версию элемента управления.

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

Добавьте измененный элемент управления Meleak ButtonChrome.cs в свою библиотеку настраиваемых элементов управления WPF (ComboBox с отключенным ключом F4, являющимся другим в моем личном инвентаре), и вы готовы к работе.

0 голосов
/ 29 июля 2010

Я бы рекомендовал не включать Button Chrome в ваш шаблон.Это потребует дополнительной работы, если вы захотите воссоздать некоторые из приятных эффектов, которые он предоставляет при наведении курсора и нажатии, но это избавит от границы.

...