Silverlight模板数据绑定问题

时间:2011-07-18 11:09:00

标签: silverlight gridview telerik

我正在使用Telerik框架在Silverlight 4中创建带子元素的RadGridView。

<telerikGrid:RadGridView x:Name="itemsGrid" Grid.Row="1" AutoGenerateColumns="{Binding AutoGenerateColumn, Mode=TwoWay}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}" ItemsSource="{Binding Items, Mode=TwoWay}" CanUserInsertRows="True" ShowInsertRow="True" CanUserDeleteRows="True">              
            <telerikGrid:RadGridView.Columns>
                <telerikGrid:GridViewToggleRowDetailsColumn />

                <telerikGrid:GridViewDataColumn Header="Item 1" DataMemberBinding="{Binding Item1}" UniqueName="Item1" />
                <telerikGrid:GridViewComboBoxColumn Header="Group"  UniqueName="Group" 
                                                    ItemsSource="{Binding Groups.Items}" SelectedValueMemberPath="GroupId" DisplayMemberPath="GroupNames"  />
                <telerikGrid:GridViewComboBoxColumn Header="Supplier" UniqueName="Supplier" 
                                                    ItemsSource="{Binding Suppliers}" SelectedValueMemberPath="CompanyS" DisplayMemberPath="CompanyName"  />
                <telerikGrid:GridViewDataColumn Header="Not in use" DataMemberBinding="{Binding inUse}" UniqueName="inUse" />
</telerikGrid:RadGridView.Columns>

            <telerikGrid:RadGridView.ChildTableDefinitions>
                <telerikGrid:GridViewTableDefinition />
            </telerikGrid:RadGridView.ChildTableDefinitions>

            <telerikGrid:RadGridView.HierarchyChildTemplate>
                <DataTemplate>
                    <StackPanel>
                        <telerikGrid:RadGridView x:Name="childGrild" Grid.Row="1" AutoGenerateColumns="False" ItemsSource="{Binding ChildList}" CanUserInsertRows="True" CanUserDeleteRows="True" IsReadOnly="False" ShowInsertRow="True" ShowGroupPanel="False">
                            <telerikGrid:RadGridView.Columns>
                                                <telerikGrid:GridViewDataColumn Header="Part S" DataMemberBinding="{Binding PartS}" UniqueName="PartS" />

                                <telerikGrid:GridViewComboBoxColumn Header="Tools" ItemsSource="{Binding ElementName=control, Path=DataContext.Tools}" DataMemberBinding="{Binding PartS}" SelectedValueMemberPath="Id" DisplayMemberPath="Name" />


                            </telerikGrid:RadGridView.Columns>

                        </telerikGrid:RadGridView>

                    </StackPanel>
                </DataTemplate>
            </telerikGrid:RadGridView.HierarchyChildTemplate>

        </telerikGrid:RadGridView>

正如你所看到的,网格中的每一行都有一个子GridView,然而问题是我无法在gridview中显示任何数据的Combobx,它总是空的。如果我将它移到子tempate之外它工作正常,并显示Tools列表中的Items。 要访问列表,这是控件datacontext的属性,我给控件一个名称(控件),并使用了Path = DataContex.Tools,我读过它应该可以工作。

任何人都知道为什么ComboBox没有填充数据?我已经检查过所有属性名称都是正确的,并且实际上有数据要显示。

1 个答案:

答案 0 :(得分:2)

RadGridView和ElementName混合得不是很好。在您的情况下,找不到'control'元素。您可以使用链接中显示的DataContextProxy。它解决了我遇到的类似问题。