Портирование на WPF из WinForm, проблемы с привязкой данных - PullRequest
0 голосов
/ 10 февраля 2012

Я пытаюсь портировать проект WinForms на WPF.Но у меня есть некоторые проблемы с привязкой данных.

В моей программе WinForms есть DataGrid, в которой используется столбец в форме комбинированного списка привязки данных

His **Data** properties:
DataPropertyName **Developer**
DataSource **developerBindingSource1**
DataMember **DeveloperName**
ValueMember **Developer**

и следующий код

developerBindingSource1.DataSource = DT.Developer;
taskBindingSource.DataSource = DT.Task;
typeTaskBindingSource.DataSource = DT.TypeTask;

developBindObjBindingSource.DataSource = DevelopBindObj.GetBindingList(DT.Developer);
typeTaskBindObjBindingSource.DataSource = TypeTaskBindObj.GetBindingList(DT.TypeTask);

Я использую дополнительный класс для привязки данных

class DevelopBindObj
{
    public Developer Developer { get; private set; }
    public string DeveloperName
    {
        get
        {
            return this.Developer.FIO;
        }
    }
        private DevelopBindObj(Developer Developer)
        {
            this.Developer = Developer;
        }           
    public static IBindingList GetBindingList(IEnumerable<Developer>Developers)        {BindingList<DevelopBindObj> result = new BindingList<DevelopBindObj>();
    foreach (var ee in Developers)
    {
        result.Add(new DevelopBindObj(ee));
    }
    return result;
}

И как я могу это сделать в WPF?

Я пробовал:

<DataGridComboBoxColumn x:Name="iDTypeTaskColumn"
                        Header="IDType Task"
                        Width="SizeToHeader"
                        SelectedValuePath="{Binding Source={StaticResource bindObjectsTaskViewSource}, Path=TypeTask}"
                        DisplayMemberPath="{Binding Source={StaticResource bindObjectsTaskViewSource}, Path=TypeTaskName}"
                        ItemsSource="{Binding Source={StaticResource bindObjectsTaskViewSource}}" SelectedItemBinding="{Binding Path=tblDevTypeTask}">

Но этоне работает.

Ответы [ 2 ]

1 голос
/ 10 февраля 2012

SelectedValuePath и DisplayMemberPath должны быть именами свойств элементов в ComboBox, а не привязками

<DataGridComboBoxColumn x:Name="iDTypeTaskColumn"
                        Header="IDType Task"
                        Width="SizeToHeader"
                        SelectedValuePath="TypeTask"
                        DisplayMemberPath="TypeTaskName"
                        ItemsSource="{Binding Source={StaticResource bindObjectsTaskViewSource}}" 
                        SelectedItemBinding="{Binding Path=tblDevTypeTask}">

Где bindObjectsTaskViewSource - это коллекция объектов, и каждый объект в этой коллекцииимеет свойство под названием TypeTask и TypeTaskName

0 голосов
/ 10 февраля 2012

Ваш bindObjectsTaskViewSource объявлен где-нибудь в ресурсах, чтобы он был доступен таким образом ... {StaticResource bindObjectsTaskViewSource}

Если нет, то сначала вы должны изучить основы WPF, чтобы понять разницу между Source как StaticResource и Source как DataContext.

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