Редактировать: переписать вопрос
Я использую библиотеку управления проектами из http://dlhsoft.com/Home.aspx в моем пользовательском контроле WPF.
Я показываю их элемент управления LoadChartResourceListView на своей странице и использую табличку с данными для отображения пользовательских столбцов в виде списка:
<my:LoadChartResourceListView TaskManagerSource="{Binding ElementName=ganttChartTaskListView,Path=TaskManager}"
TimelinePageStart="{Binding TimelinePageStart, ElementName=ganttChartTaskListView, Mode=TwoWay}"
TimelinePageFinish="{Binding TimelinePageFinish, ElementName=ganttChartTaskListView, Mode=TwoWay}"
DisplayedTime="{Binding DisplayedTime, ElementName=ganttChartTaskListView, Mode=TwoWay}"
Margin="6" Name="loadChartResourceListView">
<my:LoadChartResourceListView.View>
<GridView ColumnHeaderContainerStyle="{StaticResource ListViewColumnHeaderContainerStyle}">
<!-- Set CellTemplate (or CellTemplateSelector) to specify column templates. -->
<GridViewColumn Header="Group" Width="100">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ComboBox Width="85" ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type inf:MEFUserControl}}, Path=DataContext.ResourceGroups}"
DisplayMemberPath="GroupName"
SelectedValuePath="GroupID" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Resource">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox x:Name="myTB" Text="{Binding Content}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
Весь пользовательский элемент управления (inf: MEFUserControl), который содержит этот LoadChartResourceListView, имеет datacontext, установленный для экземпляра моего класса viewmodel (TaskData). Внутри класса TaskData находится ObservableCollection<ResourceGroup> ResourceGroups {get;set;}
. Каждая группа ресурсов имеет int GroupID {get;set;}
и string GroupName{get;set;}
.
Кроме того, в классе TaskData есть ObservableCollection<Resource> Resources {get;set;}
... каждый Ресурс имеет int GroupID{get;set;}
, строку Content {get;set;}
и ResourceGroup ResGroup{get;set;}
Приведенный выше код прекрасно работает с отображением выпадающего списка и текстового поля ... Я не могу понять, почему у меня возникают проблемы с привязкой к свойству SelectedValue этого выпадающего списка. У меня много вещей, включая SelectedValue="{Binding GroupID}"
Каждый раз, когда я пытаюсь установить SelectedValue, я получаю всплывающее сообщение об ошибке в VS:
«Произошло первое исключение типа« System.Reflection.AmbiguousMatchException »в mscorlib.dll» Это ошибка из окна вывода (его объем) http://pastebin.com/AGJwn00C
Из прочитанного я прочитал, что это связано с тем, что родительский объект имеет свойство с тем же именем «GroupID». Я переименовал GroupID в ResGroupID в классе Resource, думая, что он конфликтует с классом ResourceGroup, но я получаю ту же ошибку.
Когда я устанавливаю этот ItemsSource, для DataContext для комбинированного списка задается экземпляр UserControl или TaskData?
Обновление:
Я получаю сообщение об ошибке также при использовании TextBox вместо комбинированного списка:
<TextBox Text="{Binding GroupID}"/>