如何解决如何根据另一列中的值更改DataGrid中按钮的前景颜色? WPF C#
对于一个项目,我需要根据数据库返回的值设置按钮的前景色。
F.e.如果值== 1,则前景需要为绿色。
当值== 0时,它必须具有其原始的灰色。
我在wpf DataGrid中具有以下按钮设计
<DataGrid.Columns>
<DataGridTemplateColumn Width="40">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Name="FavoriteButton" ... Foreground="#454545" Click="Button_Click">ButtonTextHere</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
其他列由DataGrid的ItemsSource自动生成。
我试图在DataGrid的后面代码中声明一个公共按钮,但无法引用按钮名称“ FavoriteButton”
这就是我正在尝试的
public partial class DataGridMain : UserControl
{
public Button btn;
public DataGridMain()
{
InitializeComponent();
btn = FavoriteButton
}
}
我已经有了这段代码来遍历我的DataGrid
foreach (System.Data.DataRowView dr in MainGrid.ItemsSource)
{
if (dr[9].ToString() == "1")
{
// here should come the action to actually
// change the foreground color of the Button.
}
else
{
// Set original color
}
}
如果有人知道解决这个问题的好方法,那么如果您分享您的知识,我将非常感激!
解决方法
只需向您的DataTrigger
中添加一个Button
,如下所示:
<DataGrid.Columns>
<DataGridTemplateColumn Width="40">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Name="FavoriteButton" Click="FavoriteButton_Click">ButtonTextHere
<Button.Style>
<Style TargetType="Button">
<Setter Property="Foreground" Value="#454545"/>
<Style.Triggers>
<DataTrigger Binding="{Binding}" Value="true">
<Setter Property="Foreground" Value="Green"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
此外,最好将您的颜色映射到其他StaticResource
与其他UI组件共享的颜色,以使您可以快速轻松地进行更改(如果需要)。
将XAML中的前景色绑定到另一个color属性,因此可以在代码中对其进行更改:
<Button x:Name="color" Foreground="Green" Visibility="Hidden"/>
将其放入您的FavoriteButton中:
Foreground="{Binding ElementName=color,Path=Foreground,UpdateSourceTrigger=PropertyChanged}"
现在您可以像这样更改颜色:
color.Foreground = Brushes.Gray;
我承认,这不是一种专业的方法,但是应该可行
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。