如何在单个数据网格单元中动态地将两个不同的控件绑定到两个不同的数据源

时间:2019-02-07 19:32:23

标签: c# wpf data-binding

我有一个数据网格,它是从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;
        }
    }

I have achieved this till now

0 个答案:

没有答案