【问题标题】:Access a Datagrid in a Rowdetailtemplate在 Rowdetailtemplate 中访问数据网格
【发布时间】:2015-10-01 13:51:58
【问题描述】:

我在 Datagrid.RowDetailsTemplate 中创建了一个 Datagrid,当我单击在 Datagrid 外部创建的按钮时,我想在其上使用 Items.refresh

我找不到使用按钮 button_refreshDetail 访问 datagrid_Detail 的此功能的方法。 这是我的代码:

<DataGrid x:Name="datagrid" HorizontalAlignment="Left" Height="618" Margin="10,74,0,0" VerticalAlignment="Top" Width="1472" AutoGenerateColumns="False" LoadingRowDetails="datagrid_LoadingRowDetails" CanUserAddRows="False">
    <DataGrid.Columns>
        <DataGridTextColumn Header="a" Binding="{Binding a}" Width="*"/>
        </DataGrid.Columns>
        <DataGrid.RowDetailsTemplate>
            <DataTemplate>
                <DataGrid x:Name="datagrid_Detail" ItemsSource="{Binding b}" AutoGenerateColumns="False" SelectionChanged="datagrid_Detail_SelectionChanged" MouseLeftButtonUp="datagrid_Detail_MouseLeftButtonUp">
                    <DataGrid.Columns>
                        <DataGridCheckBoxColumn Header="c" Binding="{Binding c, Mode=TwoWay}" IsReadOnly="False"/>
                        <DataGridTextColumn Header="d" Binding="{Binding d, Mode=TwoWay}" IsReadOnly="False"/>
                        <DataGridComboBoxColumn Header="e" x:Name="combobox_e"/>
                        <DataGridComboBoxColumn Header="f" x:Name="combobox_f"/>
                        <DataGridTextColumn Header="g" Binding="{Binding g, Mode=TwoWay}" IsReadOnly="False"/>
                        <DataGridComboBoxColumn Header="h" x:Name="combobox_h"/>
                        <DataGridComboBoxColumn Header="i" x:Name="combobox_i"/>
                        <DataGridTemplateColumn Width="45" Header="j">
                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <Image Source="j.png" Width="20" Height="20"/>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                        </DataGridTemplateColumn>
                    </DataGrid.Columns>
                </DataGrid>
            </DataTemplate>
        </DataGrid.RowDetailsTemplate>
    </DataGrid>
    <Button x:Name="button_refreshDetail" Content="button_refreshDetail" HorizontalAlignment="Left" Height="26" Margin="129,697,0,0" VerticalAlignment="Top" Width="118" Click="button_refreshDetail"/>

感谢您的帮助。

【问题讨论】:

    标签: c# wpf datagrid rowdetailstemplate


    【解决方案1】:

    您不能只使用名​​为“b”的集合来更改项目吗?

    如果绑定配置良好,我的意思是:

    • b 是ObservableCollection

    以及您集合中的每个自定义数据类型

    • 实现INotifyPropertyChanged

    您应该能够更新每个对象的属性或从集合中添加/删除项目,并且无需其他额外代码即可更新视图。

    至少这是我会做的事情。可能我不是很理解你那令人耳目一新的场景。

    【讨论】:

    • 我的情况是: - 我对我的 datagrid_Detail 的一列进行排序 - 我更新我的数据 - 我的数据已更新,但数据网格显示不是因为排序..
    【解决方案2】:

    使用ICollectionViewSortDescriptionDataGrid 进行排序。访问datagrid_Detail 可能不是一个好主意,而是操作底层数据。

    【讨论】:

      猜你喜欢
      • 2015-03-05
      • 1970-01-01
      • 2013-02-20
      • 1970-01-01
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多