我有三个DataGrids
设置为个人UserControls
,每个ItemsSource
绑定到DependencyProperty
中的不同ViewModel
。
当在第一个DataGrid
中选择了一行时,其他两个填充了与所选行相关的信息。虽然这很好,但我希望第二个和第三个DataGrid
显示在第一个RowDetailsTemplate
的{{1}}中。
我遇到的问题是父DataGrid
的{{1}}覆盖了其他两个ItemsSource
,因此它们没有填充。我已尝试在许多其他类似问题上发布解决方案,但没有一个解决了我的问题。我的代码在下面,我希望我只是错过了一些明显的东西,但任何帮助都会受到赞赏!
DataGrid
<DataGrid x:Name="PostDataGrid"
ItemsSource="{Binding WSEDriverList}"
SelectedItem="{Binding SelectedWSEDriverPOST}"
Style="{DynamicResource MainDataGridStyle}"
Margin="0,0,0,0"
Grid.Row="1" >
<DataGrid.Columns>
<DataGridTextColumn Header="HesId" Binding="{Binding HESID, Mode=OneWay}" Width="50"/>
<DataGridTextColumn Header="WseId" Binding="{Binding WSEID, Mode=OneWay}" Width="50"/>
<DataGridTextColumn Header="API" Binding="{Binding API, Mode=OneWay}" Width="198" />
<DataGridTextColumn Header="Request Date" Binding="{Binding Path=REQUEST_DATE, Mode=OneWay, StringFormat=dd/MM/yyyy HH:mm:ss}" Width="125"/>
<DataGridTextColumn Header="Result Date" Binding="{Binding Path=RESULT_DATE, Mode=OneWay, StringFormat=dd/MM/yyyy HH:mm:ss}" Width="125"/>
<DataGridTextColumn Header="Return Code" Binding="{Binding RETURN_CODE, Mode=OneWay, StringFormat=0}" Width="80" />
<DataGridTextColumn Header="Status" Binding="{Binding STATUS, Mode=OneWay, StringFormat=0}" Width="70" />
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<DataTemplate DataType="{x:Type viewmodel:WSEAuditViewModel}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Expander Header="NOTIFICATION" Grid.Row="0">
<ItemsControl ItemsSource="{Binding WSEDriverGETResult}">
<usercontrol:NOTIFICATIONUserControl/>
</ItemsControl>
</Expander>
<Expander Header="GET" Grid.Row="1">
<ItemsControl ItemsSource="{Binding WSEDriverGETResult}">
<usercontrol:GETUserControl/>
</ItemsControl>
</Expander>
</Grid>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
<DataGrid x:Name="NotificationDG"
ItemsSource="{Binding NotificationResult}"
以下是绑定到<DataGrid x:Name="GetDG"
ItemsSource="{Binding WSEDriverGETResult}"
的{{1}}的代码。
DependencyProperties
答案 0 :(得分:0)
由于NotificationResult
和WSEDriverGETResult
属性属于与WSEDriverList
属性相同的类,因此您应该能够使用{RelativeSource}
绑定到{{1父DataContext
:
DataGrid
<DataGrid x:Name="NotificationDG" ItemsSource="{Binding DataContext.NotificationResult,
RelativeSource={RelativeSource AncestorType=DataGrid}}"></DataGrid>