Проблема привязки данных в шаблоне Silverlight - PullRequest
0 голосов
/ 18 июля 2011

Я использую инфраструктуру Telerik для создания RadGridView с дочерними элементами в Silverlight 4.

<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, однако проблема заключается в том, что яне могу получить Combobx в сетке для отображения любых данных, он всегда пуст.Если я перемещаю его за пределы дочернего шаблона tempate, он работает нормально, и отображаются элементы, которые находятся в списке инструментов.Чтобы получить доступ к списку, который является свойством контекста datactext, я дал элементу управления имя (control) и использовал Path = DataContex.Tools, который я прочитал, должен работать.ComboBox не заполнен данными?Я проверил, что все имена свойств правильные, и что на самом деле есть данные для показа.

1 Ответ

2 голосов
/ 18 июля 2011

RadGridView и ElementName не очень хорошо сочетаются. В вашем случае элемент «control» не найден. Вы можете использовать DataContextProxy , как показано в ссылке. Это решило проблему, которая у меня была похожая.

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