WPF RowDetailsTemplate SelectedItem和button命令

时间:2014-03-12 22:41:18

标签: c# wpf mvvm

首先,我使用的是MVVM设计模式。我有一个DataGrid,如下面的第一个代码片段所示,其中RowDetailsTemplate设置为另一个网格,下面是第二个代码片段。父网格的itemsource是Adult类型的ObservableCollection,子网格的itemsource是Child类型的ObservableCollection,它是每个Adult对象的属性。我正在尝试为每个网格设置SelectedItem和button命令,以便它命中与视图关联的ViewModel,我无法在这里看到我的错误。任何建议都会很棒。

<DataGrid 
AutoGenerateColumns="False" 
ItemsSource="{Binding AllAdults}" 
SelectedItem="{Binding SelectedAdult}" 
RowDetailsTemplate="{DynamicResource RowDetailsTemplate}" 
RowDetailsVisibilityMode="Collapsed">                
<DataGrid.Columns>
    <DataGridTemplateColumn>
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <Button Command="{Binding Path=DataContext.ShowAdultInfoCommand, RelativeSource= {RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}" Content="Print"/>
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
    <DataGridTextColumn Binding="{Binding Path=AdultId, Mode=OneWay}" Header="Id" IsReadOnly="True" />
</DataGrid.Columns>

<DataTemplate x:Key="RowDetailsTemplate">
<DataGrid 
    ItemsSource="{Binding AllChildren}" 
    AutoGenerateColumns="False"
    SelectedItem="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}, AncestorLevel=2}, Path=DataContext.SelectedChild}">
    <DataGrid.Columns>
        <DataGridTemplateColumn>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Button Command="{Binding Path=DataContext.ShowChildInfoCommand, RelativeSource= {RelativeSource FindAncestor, AncestorType={x:Type DataGrid}, AncestorLevel=2}}" Content="Show"/>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        <DataGridTextColumn Binding="{Binding Path=ChildId, Mode=OneWay}" Header="Child Id" IsReadOnly="True" />
    </DataGrid.Columns>
</DataGrid>

0 个答案:

没有答案