Привязка данных в представлении списка - PullRequest
0 голосов
/ 13 марта 2009

Я новичок в XAML / WPF и столкнулся с этой странной проблемой:

У меня есть представление списка, для которого я устанавливаю источник данных. DataSource является массивом "CatalogPartRows". Я создаю свои столбцы в коде. Затем я устанавливаю их шаблоны ячеек (некоторые из моих столбцов содержат поля со списком и флажки). Моя проблема здесь в том, что мне нужно вызвать функцию в классе «CatalogPartRow», которая выбирает строку, которую мне нужно установить в ячейке.

Вот код, который я пытаюсь использовать:

            // THIS DOES NOT WORK
            //
            ObjectDataProvider ODP = new ObjectDataProvider();
            ODP.MethodName = "PropertyValueAsString";
            ODP.MethodParameters.Add(PropertyName);
            ODP.ObjectType = typeof(CatalogPartRow);

            Binding DataBindingText = new Binding();
            DataBindingText.Source = ODP;

            // THIS WORKS
            //
            //String BindingPathText = /*NOXLATE*/"PropertyValues[" + CPR.IndexOf(PropertyName) + /*NOXLATE*/"]";
            //Binding DataBindingText = new Binding(BindingPathText);

            FrameworkElementFactory TextBlockElement = new FrameworkElementFactory(typeof(TextBlock));
            TextBlockElement.SetBinding(TextBlock.TextProperty, DataBindingText);

            FrameworkElementFactory PropertyColumnElement = new FrameworkElementFactory(typeof(Grid));
            PropertyColumnElement.AppendChild(TextBlockElement);

            DataTemplate DT = new DataTemplate();
            DT.VisualTree = PropertyColumnElement;

            GVC.CellTemplate = DT;

Правильный ли мой подход?

CPR = CatalogPartRow

GVC = GridViewColumn

Спасибо, Радж.

1 Ответ

0 голосов
/ 22 марта 2009

Поскольку перенос метода в свойство не будет работать (так как параметр является обязательным), лучшим вариантом, вероятно, является создание преобразователя значений. Вы можете использовать PropertyName в качестве привязки для столбца, а затем в своем конвертере вы можете передать это в свой метод и вернуть значение метода.

...