如何更改c中的按钮背景颜色#
如何在Windows Phone应用程序中以编程方式更改按钮背景颜色。 这是我的xaml代码。如何更改c中的按钮背景颜色#
<Style TargetType="Button" x:Key="TabButtonLast">
<Setter Property="Foreground" Value="Navy"/>
<Setter Property="Background" Value="Green" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border CornerRadius="15,15,15,15" Background="Green" >
<ContentPresenter x:Name="contentPresenter" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Button Name="btnNext" Style="{StaticResource TabButtonLast}" Content="Next" Height="23" HorizontalAlignment="Left" Margin="131,311,0,0" VerticalAlignment="Top" Width="75" Click="btnNext_click" />
我试过使用“using System.Drawing”yourButtonName.BackColor = Color.Red; 但它似乎没有工作。任何帮助将不胜感激。
你可以改变背景颜色这样的代码:
btnNext.Background = new SolidColorBrush(Windows.UI.Colors.Red);
它提供了一个错误“名称笔刷在当前上下文中不存在” – Rachel
对不起,我编辑了答案。 – user3390116
您需要修改自己的风格如下:
<Style TargetType="Button" x:Key="TabButtonLast">
<Setter Property="Foreground" Value="Navy"/>
<Setter Property="Background"
Value="{Binding Background, RelativeSource={RelativeSource Self}}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border CornerRadius="15,15,15,15" Background="{TemplateBinding Background}">
<ContentPresenter x:Name="contentPresenter" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
1)如果你想静态背景:
<Button Background="Red" Name="btnNext" Style="{StaticResource TabButtonLast}" Content="Next" Height="23" HorizontalAlignment="Left" Margin="131,311,0,0" VerticalAlignment="Top" Width="75" Click="btnNext_click" />
2)从代码改变背景色:
private void ChangeButtonColor()
{
btnNext.Background = "Red";
}
3)使用MVVM方法例如:
“前端”:
<Window x:Class="WpfApplication3.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApplication3"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<Style TargetType="Button" x:Key="TabButtonLast">
<Setter Property="Foreground" Value="Navy"/>
<Setter Property="Background"
Value="{Binding Background, RelativeSource={RelativeSource Self}}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border CornerRadius="15,15,15,15" Background="{TemplateBinding Background}">
<ContentPresenter x:Name="contentPresenter" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid>
<Button Style="{StaticResource TabButtonLast}" Content="CHANGE COLOR" Background="{Binding BtnBackColor}"
Margin="50" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Click="Button_Click" />
</Grid>
</Window>
“后端”:
using System;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Windows;
using System.Windows.Media;
namespace WpfApplication3
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window, INotifyPropertyChanged
{
public Brush BtnBackColor { get; set; } = new SolidColorBrush(Colors.Red);
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
}
public event PropertyChangedEventHandler PropertyChanged;
private void Button_Click(object sender, RoutedEventArgs e)
{
Random r = new Random();
//Without Binding variant
//btnNext.Background = new SolidColorBrush(Color.FromRgb((byte)r.Next(1, 255),
// (byte)r.Next(1, 255), (byte)r.Next(1, 233)));
//MVVM approach variant
BtnBackColor = new SolidColorBrush(Color.FromRgb((byte)r.Next(1, 255),
(byte)r.Next(1, 255), (byte)r.Next(1, 233)));
OnPropertyChanged("BtnBackColor");
}
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}
水木清华这样应该工作...
我试过了你的方法,但是没有工作.. – Rachel
对不起!我编辑了答案。 –
您可以Data Binding尝试。数据绑定是一个不错的和明智的。一开始你必须读一点,但它是值得的。 尤其适用于MVVM应用程序。
请不要参考一般文件,但要更具体:尝试回答这个问题。 – kloarubeek
您想在哪种情况下进行背景颜色更改? –
我想知道如果我可以在c#代码中设置按钮的背景颜色,而不是在xaml中设置它。我是这个领域的新手,如果我问的是错误的问题,请原谅我。 – Rachel
一般来说,你想在xaml而不是后面的c#代码中做东西,IMO。 – Stuart