Как да използвам WPF Toolkit Datagrid DataGridTemplateColumn и падащ списък?

Имам мрежа с данни, която изглежда така

<tk:DataGrid  ItemsSource="{Binding Parents}" AutoGenerateColumns="False">
                <tk:DataGrid.Columns>
                <tk:DataGridTextColumn  Header="Description" Binding="{Binding ID}" />

                <tk:DataGridTemplateColumn Header="Description" >
                    <tk:DataGridTemplateColumn.CellEditingTemplate>
                        <DataTemplate>
                            <TextBox Text="{Binding Path=Description, Mode=TwoWay}" />
                        </DataTemplate>
                    </tk:DataGridTemplateColumn.CellEditingTemplate>
                    <tk:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Path=Description}"/>
                        </DataTemplate>
                    </tk:DataGridTemplateColumn.CellTemplate>
                </tk:DataGridTemplateColumn>

                <tk:DataGridTemplateColumn Header="Child Description" >
                    <tk:DataGridTemplateColumn.CellEditingTemplate>
                        <DataTemplate>
                            <ComboBox  SelectedIndex="{Binding Path=ChildID}"  ItemsSource="{Binding Path=Children}" />
                        </DataTemplate>
                    </tk:DataGridTemplateColumn.CellEditingTemplate>
                    <tk:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Path=Children.Description}"/>
                        </DataTemplate>
                    </tk:DataGridTemplateColumn.CellTemplate>
                </tk:DataGridTemplateColumn>
            </tk:DataGrid.Columns>
        </tk:DataGrid>

Изгледът е обвързан с ViewModel, който излага списък с родители, които трябва да бъдат моите редове, и списък с деца, който трябва да бъде съдържанието на падащия списък. Начинът, по който е настроен, получавам своите редове с родители, но няма данни в колоната за описание на дете. Когато щракна двукратно, редът става редактиран и се показва полето със списък. Но няма данни. Когато погледна в изходния прозорец, виждам грешката при обвързване, казвайки „Грешка в пътя на BindingExpression: свойството „Деца“ не е намерено на „обект“ „Родител“ „. Знам...Как да му кажа да търси едно ниво нагоре? Опитах се да обвържа datagrid само с viewmodel, но след това не се показват редове. Опитах да използвам маркирането на relativesource и все още не мога да го накарам да вижда това, което искам да вижда. Сигурен съм, че синтаксисът ми е неправилен. И не можах да намеря примери. какво правя грешно


person nportelli    schedule 16.11.2009    source източник


Отговори (1)


Може да има по-умни начини за изпълнение на тази задача, но глупавият, бърз метод, който бих използвал, е да модифицирам родителския обект, за да съдържа колекция Children. Това би направило връзката между родител и дете изрична и не е нужно да променяте вашия xaml синтаксис от по-горе.

Ако не сте искали да добавите колекция Children към вашия родителски обект, може да можете да използвате следното xaml обвързване::

    ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, 
AncestorType={x:Type tk:DataGrid}}, 
Path=DataContext.Children}"
person Ed Gonzalez    schedule 23.11.2009
comment
Проблемът е, че искам да зависи от стойностите на реда. погледнете тук: stackoverflow. com/questions/3203416/ - person Shimmy Weitzhandler; 11.07.2010