我有3列的数据网格。最后一列仅通过显示“✓”或“✗”显示启用或禁用该行的数据集。
我想为最后一列设置样式,以使内容对齐居中,根据内容,“文本”应为绿色(对于“✓”)或红色(对于“✗”)。那么我该如何实现呢?

<DataGrid x:Name="employeesDataGrid" Margin="5,55,5,0" VerticalAlignment="Top" Height="172" IsSynchronizedWithCurrentItem="False" MinRowHeight="10" HeadersVisibility="Column" AutoGenerateColumns="False" GridLinesVisibility="None" SelectionMode="Single" RowDetailsVisibilityMode="Collapsed" Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}">
    <DataGrid.Columns>
        <DataGridTextColumn x:Name="nameHeader" Header="{x:Static p:Resources.nameHeader}" Width="100"/>
        <DataGridTextColumn x:Name="surnameHeader" Header="{x:Static p:Resources.surnameHeader}" Width="200" />
        <DataGridTextColumn x:Name="isenabledHeader" Header="{x:Static p:Resources.isenabledHeader}" MinWidth="50">
            <DataGridTextColumn.HeaderStyle>
                <Style TargetType="{x:Type DataGridColumnHeader}">
                    <Setter Property="HorizontalAlignment" Value="Stretch" />
                    <Setter Property="HorizontalContentAlignment" Value="Center" />
                </Style>
            </DataGridTextColumn.HeaderStyle>
            <DataGridTextColumn.CellStyle>
                <Style TargetType="{x:Type DataGridCell}">
                    <Setter Property="HorizontalAlignment" Value="Center" />
                </Style>
            </DataGridTextColumn.CellStyle>
        </DataGridTextColumn>
    </DataGrid.Columns>
</DataGrid>


如何根据“✓”和“✗”对单元格进行样式设置?
这是我用C#填充数据网格的方法。

nameHeader.Binding = new Binding("Name");
surnameHeader.Binding = new Binding("Surname");
isenabledHeader.Binding = new Binding("IsEnabled");

employeesDataGrid.ItemsSource = null;
Employee employee = new Employee();
// returns a List<Employee>
employeesList = employee.GetAll();
employeesDataGrid.ItemsSource = employeesList;


编辑
我想出了如何自己对齐单元格文本的方法。代码已更新。所以现在我想将其上色为绿色或红色。有什么建议么?

最佳答案

如果“✓”和“✗”是字符串值,您可以像这样将DataTriggers添加到CellStyleDataGridTextColumn中。在我的测试示例中,我为绿色使用了字符串值first(您应将其更改为“✓”)。

<Style.Triggers>
    <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=Self},
                           Path=Content.Text}" Value="first">
        <Setter Property="Foreground" Value="Green" />
    </DataTrigger>
</Style.Triggers>

关于c# - WPF C#-列内容的对齐方式和样式(取决于内容),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37065283/

10-13 07:55
查看更多