WPF DataTemplate组合框绑定问题

编辑:重写问题

我在我的WPF用户控件中使用http://dlhsoft.com/Home.aspx中的项目管理库。

我在页面上显示他们的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>

包含此LoadChartResourceListView的整个用户控件(inf:MEFUserControl)都有一个datacontext设置为我的viewmodel类(TaskData)的一个实例。 在TaskData类中是一个ObservableCollection<ResourceGroup> ResourceGroups {get;set;} 。 每个ResourceGroup都有一个int GroupID {get;set;}string GroupName{get;set;}

另外,在TaskData类中还有一个ObservableCollection<Resource> Resources {get;set;} ...每个资源都有一个int GroupID{get;set;} ,string Content {get;set;}ResourceGroup ResGroup{get;set;}

上面的代码工作正常,显示组合框和文本框...我不能,为我的生活,找出为什么我有问题绑定到组合框的SelectedValue属性。 我有很多东西,包括SelectedValue="{Binding GroupID}"

每当我尝试设置SelectedValue时,我都会在VS中收到此错误弹出窗口:“在mscorlib.dll中发生类型'System.Reflection.AmbiguousMatchException'的第一次机会异常”这是从输出窗口(其大量)http:/ /pastebin.com/AGJwn00C

从阅读中,我已经读到,这是由于父对象有一个名称为“GroupID”的属性。 我在Resource类中将GroupID重命名为ResGroupID,认为它与ResourceGroup类冲突,但我收到相同的错误。

当我设置这个ItemsSource时,DataContext是否被设置为UserControl或TaskData实例的组合框?

更新:

当我使用TextBox而不是组合框时,我也收到错误:

<TextBox Text="{Binding GroupID}"/>

写吧

SelectedValue =“{Binding Path = GroupID}”


解决了它。 阅读后:http://dlhsoft.com/KnowledgeBase/Task-Appearance-Bar-Templating-Custom-Data-Binding.htm

我必须为自定义属性执行Item.PropertyName。

链接地址: http://www.djcxy.com/p/44617.html

上一篇: WPF DataTemplate ComboBox binding issue

下一篇: Silverlight bind collection to Combobox in DataForm using MVVM