2015-10-19 6 views
2

Как установить цвет фона кнопки в xaml?Как установить цвет фона кнопки в WPF?

Это не может быть гораздо сложнее, чем

<Button Margin="2" Background ="LightGreen" ....> 

Но это не работает ... во избежание путаницы, кнопка здесь System.Windows.Controls.Button

Редактировать

Я забыл упомянуть, что я использую ThemeManager DevExpress, но не думал, что это вызовет проблемы, поскольку DevExpress они не создают стандартные кнопки Windows ... видимо, они делают, однако, что в основном делает его impo ssible изменить цвет фона кнопки без какой-либо крупной работы ...

+0

Есть ли Тематизация подход в вашем проекте? –

+0

Да, DevExpress ThemeManager ... –

+0

@Downvoter, позаботьтесь прокомментировать? –

ответ

4

Согласно documentation:

DevExpress предоставляет множество тем, которые могут быть применены ко всем контролирующей DevExpress для WPF и некоторых стандартных элементов управления (GroupBox, ScrollViewer, свитка, RadoiButton, Button, ListBox, Slider, TabControl, Separator, ToggleButton, RepeatButton, Label, ListBoxItem, TabItem, ToolTip и т. Д.).

Как вы можете видеть, здесь указано управление Button. Но тогда в документации говорится, что вы можете отключить тему индивидуального управления, установив для атрибута ThemeName значение None. Таким образом, вы можете просто отключить тему для кнопки или для некоторых своих родительских контейнеров и использовать свой собственный стиль.
Вот пример:

<Button Margin="2" Background="LightGreen" dx:ThemeManager.ThemeName="None" ...> 
+2

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

1

Попробуйте это:

yourBtn.Background = new SolidColorBrush(Colors.Green); 

Или в XAML:

<Window.Resources> 
    <SolidColorBrush x:Key="BG" Color="Green"/> 
</Window.Resources> 

<Button Background="{DynamicResource BG}"></Button> 
+0

Я спросил конкретно о решении xaml! –

+0

, который сказал, попробуйте установить фон таким образом, чтобы увидеть, работает ли он. Тогда вы узнаете, что это проблема с вашим xaml, а не с какой-то странной конфигурационной вещью, которая останавливает кнопки от правильного окрашивания. – simonalexander2005

+0

@MattWolf ... Проверьте мой обновленный ответ. –

-1

<Button Margin="2" Background="LightGreen"/> работы. Если это не сработает для вас, возможно, у вас есть еще один style или менеджер стиля, который его где-то переопределяет.

Дополнительная информация. Еще один ответ показывает, как создать индивидуальную кнопку с использованием динамических ресурсов. Для того, чтобы установить цвет фона для всех кнопок в стиле с использованием ResourceDictionary, вы можете использовать что-то вроде:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 

    <!--background brush--> 
    <LinearGradientBrush x:Key="backgroundBrush" StartPoint="0.5,0" EndPoint="0.5,1"> 
     <GradientStop Color="White" Offset="0.3"/> 
     <GradientStop Color="#DDDDFF" Offset="1"/> 
    </LinearGradientBrush> 

     <!--The style for buttons--> 
     <Style TargetType="Button"> 
      <Setter Property="Background" Value="{StaticResource backgroundBrush}"/> 
     </Style> 
    </ResourceDictionary> 
+0

Я предлагаю заменить '

+0

@KingKing Я не совсем понимаю, к чему вы клоните? Конечно, ответ с полным кодом лучше для людей, которые смотрят на это в будущем (особенно если исходный вопрос редактируется в какой-то момент) – simonalexander2005

+0

Ты тот, кто не понимает, что я имел в виду (или, может быть, *** подразумевал ***). Это даже не ответ, и будьте осторожны, чтобы избежать обвинений в этом. Некоторые мои комментарии даже в 3-4 раза дольше. –

-1

Вот решение:

<Grid> 
    <Button Margin="2" Background="LightGreen" FontSize="35">Button</Button> 
</Grid> 

вид:

Regular

на мышином:

When mouse is over

Решение должно работать во всех случаях, кроме случаев, когда фон определен в коде позади. Вы можете проверить это с помощью snoop или xaml spy. С уважением,

+0

, как указано, это не работает с задействованным THeme Manager DevExpress. –

+0

@MattWolf только для случая, что случилось YUO сделать это в коде после того, как lyouting было сделано? – Ilan

+0

ничего не меняется. Код позади не имеет значения –

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