我有一个类(Compound)绑定到DataGrid。我想在属性设置为true时更改单元格的背景颜色。这是我试过的:
public class Compound : DependencyObject
{
public static readonly DependencyProperty RSquaredFlagProperty =
DependencyProperty.Register("RSquaredFlag", typeof(bool),
typeof(Compound), new FrameworkPropertyMetadata(false));
public bool RSquaredFlag
{
get { return (bool)GetValue(RSquaredFlagProperty); }
set { SetValue(RSquaredFlagProperty, value); }
}
...
}
XAML:
<common:DataGridEx ItemsSource="{Binding}">
<DataGrid.Columns>
<DataGridTextColumn Header="R^2" Binding="{Binding RSquared, StringFormat=N3}">
<DataGridTextColumn.ElementStyle>
<Style>
<Style.Triggers>
<Trigger Property="model:Compound.RSquaredFlag" Value="True">
<Setter Property="Background" Value="Red"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</common:DataGridEx>
但是,使用此代码,我收到编译器错误“无法解析样式属性'背景'。验证拥有类型是Style的TargetType,还是使用Class.Property语法指定属性”。
我错过了什么?如何使它工作?
答案 0 :(得分:1)
将其更改为Property="TextBlock.Background"
或在您的风格中指定相应的TargetType
。
我认为触发器不会起作用,因为它会在控件本身而不是DataContext上查找属性,而是使用DataTrigger
。