Как динамически связать два разных элемента управления с двумя разными источниками данных в одной ячейке таблицы данных - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть сетка данных, которую я заполняю из запроса sql, в котором есть несколько столбцов Fee значений bool, в которых отображается статус комиссии (оплачено / не оплачено).Я хочу, чтобы в каждой ячейке этого столбца отображалась метка и кнопка, метка будет отображать сумму комиссии (которая у меня есть в отдельной таблице в sql), а кнопка будет отображать статус, если он оплачен или не оплачен, на основе значения bool.

Я изменил шаблон этого столбца оплаты динамически, обнаружив столбец 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;
        }
    }

Я достиг этого до сих пор

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...