我有一个数据网格,它是从sql查询中填充的,该查询具有一些bool值的Fee列,其中显示了费用的状态(已付款/未付款)。我希望该列的每个单元格显示一个标签和一个按钮,标签将显示费用金额(我在sql的另一个表中具有此费用),并且按钮将根据布尔值显示已付款还是未付款的状态。 / p>
我通过使用以下在线发现的代码来检测bool列,从而动态更改了该费用列的模板,还使用了一个值转换器将bool的值更改为(已付/未付)字符串,并获得了我想要的按钮,但是对于标签,我被卡住了,因为我不知道如何设置标签的绑定以获得所需的结果。
public class MyDataGridTemplateColumn : DataGridTemplateColumn
{
public string ColumnName
{
get;
set;
}
protected override FrameworkElement GenerateElement(DataGridCell cell, object dataItem)
{
// The DataGridTemplateColumn uses ContentPresenter with your DataTemplate.
ContentPresenter cp = (ContentPresenter)base.GenerateElement(cell, dataItem);
// Reset the Binding to the specific column. The default binding is to the DataRowView.
BindingOperations.SetBinding(cp, ContentPresenter.ContentProperty, new Binding(this.ColumnName));
return cp;
}
}
private void dataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
if (e.PropertyType == typeof(bool))
{
MyDataGridTemplateColumn col = new MyDataGridTemplateColumn();
col.ColumnName = e.PropertyName; // so it knows from which column to get MyData
col.CellTemplate = (DataTemplate)FindResource("newTemplate");
e.Column = col;
e.Column.Header = e.PropertyName;
}
}