前言
刚接触WPF不久,其中在用到修改WPF控件颜色的时候,根据网上的好多方法都尝试了一遍,发现并没有起到什么效果,所以就试着直接绑定字符串类型的属性,内容是颜色代码?反而起到了很好的效果,下边是我的代码展示。
前端代码
<Grid>
<Button Content="btn_1" FontSize="60" Foreground="{Binding ForeColor}" Background="{Binding BackColor}" Click="Button_Click"></Button>
</Grid>
后台代码
这里因为要实现前后台绑定动态更新,所以实现了INotifyPropertyChanged接口,并声明了Set()方法。
public partial class MainWindow : Window, INotifyPropertyChanged
{
private string foreColor;
private string backColor;
public string ForeColor
{
get { return foreColor; }
set { foreColor = value;Set(); }
}
public string BackColor
{
get { return backColor; }
set { backColor = value;Set(); }
}
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
}
public event PropertyChangedEventHandler? PropertyChanged;
private void Button_Click(object sender, RoutedEventArgs e)
{
ForeColor = "#FFFFFF";
BackColor = "#00FF00";
}
private void Set([CallerMemberName]string obj="")
{
if(PropertyChanged!=null)
PropertyChanged(this, new PropertyChangedEventArgs(obj));
}
}
结果显示
后言
这样做可能不是很合适,如果大佬们有其他的想法,请在评论区给我些指导