【发布时间】:2021-10-23 16:24:19
【问题描述】:
我已经尝试过这样做,但它并没有像我预期的那样工作。我将某个类的对象放置到(该类型的)表列之一,如果 bool 属性“bold”设置为“true”,则尝试使文本变为粗体。
一些“项目类”:
public class CellItem {
public string str { get; set; }
public bool bold { get; set; }
public CellItem (string txt, bool bld) {
str = txt;
bold = bld;
}
public override string ToString() {
return str;
}
}
在某些数据上下文中:
DataTable _grid_items = new DataTable("table");
public DataView grid_items { get => _grid_items.DefaultView; }
...
_grid_items.Columns.Add(new DataColumn($"column {colnum++}", typeof (CellItem));
_grid_items.Columns.Add(new DataColumn("column 1"));
_grid_items.Rows.Add(new CellItem("row 0 col 0", false), "row 0 col 1");
_grid_items.Rows.Add(new CellItem("row 1 col 0", true), "row 1 col 1");
_grid_items.Rows.Add(new CellItem ("row 2 col 0", true), "row 2 col 1");
...
在 XAML 中:
<DataGrid ItemsSource="{Binding grid_items}" GridLinesVisibility="All"
CanUserAddRows="False" HorizontalAlignment="Left" Height="200"
Margin="0" VerticalAlignment="Top" Width="400">
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="TextBlock.TextAlignment" Value="Center" />
<Style.Triggers>
<DataTrigger Binding="{Binding CellItem.bold}" Value="true">
<Setter Property="FontWeight" Value="Bold" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
</DataGrid>
问题是为什么文本“row 1 col 0”和“row 2 col 0”不是粗体,如何纠正?
【问题讨论】:
标签: wpf datatable binding datagrid