izz moe Ответов: 1

Как привязать элементы управления к двум коллекциям


Привет Я пытаюсь привязать свой элемент управления к двум коллекциям (привязать заголовок groupbox к коллекции и содержимое к другой связанной коллекции).
вот такая ситуация в деталях:

У меня есть два стола:
Employees(empID, EmpName, empDepartmentId)
и
Departments(depID, depName)

Я хочу привязать их к элементу управления компоновкой потока (частое) так что заголовки groupboxes элемента управления показывают название отдела, а содержимое-сотрудников в этом отделе

Приведенный ниже код отлично работает для заголовка, но я не могу понять, как добавить имена сотрудников.

Я поставил ??? где я должен привязываться к сотрудникам.

Я думаю, что мне нужно привязаться к коллекции, которая фильтруется с помощью идентификатора свойства depID текущего элемента, но я не знаю, как это сделать, что-то вроде этого:
XPCollection<employee> DepEmployees = new XPCollection<employee>(new BinaryOperator("empDepartmentId", currentgroupbox.depID????? , BinaryOperatorType.Equal));

а потом в Xaml:

<TextBlock Text="{Binding DepEmployees , RelativeSource={RelativeSource AncestorType={x:Type local:MainWindow}}}"/>


Что я уже пробовал:

код XAML:

<dxlc:FlowLayoutControl
            x:Name="Departments"
            Background="Transparent"
            ItemSpace="12"
            LayerSpace="12"
            Orientation="Horizontal">
<dxlc:FlowLayoutControl.ItemTemplate>
                <DataTemplate>
                    <dxlc:GroupBox
                        Width="200"
                        Height="250"
                        Content="{Binding}"
                        Cursor="Hand"
                        FontFamily="Segoe UI Light"
                        FontSize="14"
                        Header="{Binding}"
                        MaximizeElementVisibility="Visible"
                        Padding="0">
                        
                        <dxlc:GroupBox.HeaderTemplate>
                            <DataTemplate>
                                <TextBlock Margin="1">
                                    <Run FontFamily="Segoe UI" Text="{Binding depName}" />
                                    <Run Text=" , " />
                                    <Run Text="{Binding depID}" />
                                </TextBlock>
                            </DataTemplate>
                        </dxlc:GroupBox.HeaderTemplate>
                        <dxlc:GroupBox.ContentTemplate>
                            <DataTemplate>
                                
                                    <TextBlock Text="{Binding empName ???????}" />
                                
                            </DataTemplate>
                        </dxlc:GroupBox.ContentTemplate>
                    </dxlc:GroupBox>
                </DataTemplate>
            </dxlc:FlowLayoutControl.ItemTemplate>
        </dxlc:FlowLayoutControl>


CSharp

Departments.ItemsSourcenew = XPCollection(typeof(Departments));

1 Ответов

Рейтинг:
1

RickZeeland

Вам нужно определить a Отношения один-ко-многим как показано в приведенных здесь примерах:
Отношения между объектами | eXpress Persistent Objects | документация DevExpress[^]

Также видеть: XPCollection Concepts | eXpress Persistent Objects | документация DevExpress[^]

Для приложений WPF рекомендуется использовать ObservableCollection вместо XPCollection смотрите второй пример здесь: T838546 - XPO лучшие практики в приложениях WPF | Центр поддержки DevExpress[^]


izz moe

Проблема не в самой коллекции xpcollection, представьте себе, что в этой ситуации вы хотите сделать для каждого отдела список, содержащий сотрудников каждого отдела.. списки привязаны к отделам, но каждый список должен фильтровать таблицу employees по идентификатору отдела, к которому он принадлежит, моя проблема заключается в привязке каждого списка, так как они создаются с помощью itemtemplate.

RickZeeland

Ну, похоже, что вам не хватает опыта XPO в CodeProject, чтобы помочь вам, может быть, вам стоит попробовать на форуме DevExpress, удачи !