我通常使用的触发器如下所示。然而,在本例中,我有一个动态数据网格(来自数据库),我不能为静态列设置触发器。
<DataGridTemplateColumn Width="*" Header="Id">
<DataGridTemplateColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<DataTrigger Binding="{Binding Content, RelativeSource={RelativeSource Self}}" Value="ERROR">
<Setter Property="Background" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTemplateColumn.CellStyle>
</DataGridTemplateColumn>
字符串
如何为动态内容设置相同的触发器?我将datagrid内容设置为
private void setEFdatagrid()
{
using (FBaseContext context = new FBaseContext())
{
var listItems = context.TLoggers.ToList();
loggerItems = new ObservableCollection<TLogger>(listItems);
datagridLogger.ItemsSource = loggerItems;
}
}
型
1条答案
按热度按时间f2uvfpb91#
您的方法是正确的,但是您在DataTrigger绑定中缺少了一个步骤。
内容它不是绑定属性本身的值(我想是TLogger.ID),而是保存该值的ContentControl(例如Textblock)。所以,如果你想正确执行这个绑定,你有两种方法:将DataTrigger绑定到属性,或将其绑定到Content.Text(在文本单元格的情况下)
我认为最简单的解决方案是第二个,所以这段代码可以工作:
字符串