Добавете DataGrid вътре в DataGrids RowDetailsTemplate

изглежда, че това се свързва, но редовете в мрежата с подробности са празни. Нещо не е изключено/липсва?

Опитах също {Binding SubCustomers}

SubCustomers е списък на родителски обект.

Мога да обвържа по този начин единични полета като FirstName и т.н., но не и подколекцията..

        <DataGrid.RowDetailsTemplate>
            <DataTemplate>
                <DataGrid AutoGenerateColumns="True" ItemsSource="{Binding Source=SubCustomers}" />
            </DataTemplate>
        </DataGrid.RowDetailsTemplate>

person Sonic Soul    schedule 25.05.2010    source източник


Отговори (1)


Проблемът е, че се опитвате да се свържете със свойство на DataContext на родителя, а не на този конкретен ред. И така, DataContext на RowDetails е елементът от реда и за да получите свойството на родителя, трябва да използвате RelativeSource свързвания. Ако се свържете с DataContext на родителя, след това можете да "точка надолу" към свойството, което всъщност ви интересува:

<DataGrid.RowDetailsTemplate>
        <DataTemplate>
            <DataGrid AutoGenerateColumns="True" 
                      ItemsSource="{Binding DataContext.SubCustomers, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" />
        </DataTemplate>
    </DataGrid.RowDetailsTemplate>
person Abe Heidebrecht    schedule 25.05.2010
comment
Благодаря. Това все още не работи и сега вместо да получа решетка в детайли с празни редове, просто получавам празно пространство. освен това, ако DataContext на родителя не е от определен ред, защо това работи правилно? ‹TextBlock Text={Свързващо име} /› - person Sonic Soul; 25.05.2010
comment
Подробностите са редът... Мислех, че вашите подклиенти са в родителския списък (това няма много смисъл, знам, но така прочетох въпроса ви). В такъв случай трябва да можете да се обвържете директно към списъка. Списъкът попълва ли се през цялото време? Ако не, това ObservableCollection ли е? - person Abe Heidebrecht; 25.05.2010