У меня есть listview внутри datagrid, однако у меня возникли проблемы с назначением источника элемента, который зависит от идентификатора ItemsSource="{Binding Users}"
. Другими словами, я пытаюсь получить представление каждого списка только для отображения данных, соответствующих идентификатору. В настоящее время у меня есть цикл, который будет собирать DataSet данных для пользователя, им просто не удается привязать каждый DataSet.Динамически привязывать listview к соответствующей строке datagrid
<DataGrid Name="dgUsers" ItemsSource="{Binding Users}">
<DataGrid.Columns>
<DataGridTextColumn Header="Client" Binding="{Binding Name}"/>
<!-- <DataGridTextColumn Header="Land Line" Binding="{Binding LandLine}"/> -->
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<DataTemplate x:Name="datatemplate">
<DockPanel Background="GhostWhite">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200"/>
<ColumnDefinition Width="200"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<ListView x:Name="lvData" Margin="10,82,10,156" Grid.Column="2" ItemsSource="{Binding view }" SelectedValue="{Binding selectedValue}" MouseDoubleClick="LoadSelectedData" >
<ListView.View>
<GridView>
<GridViewColumn Width="150" DisplayMemberBinding="{Binding type}">
<GridViewColumnHeader Tag="type" Content="Type" FontSize="12"/>
</GridViewColumn>
<GridViewColumn Width="150" DisplayMemberBinding="{Binding source}">
<GridViewColumnHeader Tag="source" Content="Source" FontSize="12"/>
</GridViewColumn>
<GridViewColumn Width="180" DisplayMemberBinding="{Binding stage}">
<GridViewColumnHeader Tag="stage" Content="Stage" FontSize="12"/>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
Если я правильно понимаю, что вы делаете, обычным способом сделать это было бы поместить предварительно фильтрованный набор подэлементов в каждый элемент datagrid. Вы также можете написать многодиапазонный преобразователь и использовать его с мультисвязью, которая связывает как полную коллекцию, так и идентификатор для нужного подмножества элементов коллекции. Конвертер выполнит фильтрацию и вернет список –
@edPlunkett Спасибо за ответ, поэтому самым простым вариантом было бы добавить их в мой пользовательский класс в качестве набора данных перед началом работы? 'public DataSet dataForUser {get; задавать; } ' – Bish25
Это должно быть сделано. Внутри DataTemplate RowDetailsTemplate ваш DataContext должен быть экземпляром класса User, поэтому 'ListView ItemsSource =" {Binding dataForUser} "должен получать строки DataSet в ListView. Если вы попали в ловушку, попробуйте добавить PresentationTraceSources.TraceLevel = High к привязке и проверьте панель VS Output для вывода трассировки, чтобы увидеть, что она пытается сделать. Например: «ItemsSource =» {Binding dataForUser, PresentationTraceSources.TraceLevel = High} "' –