XAML DataGrid - RowDetail绑定到主行数据

时间:2017-02-11 21:46:27

标签: c# xaml datagrid

我遇到了数据网格的问题,我想知道我是否可以以某种方式进行绑定工作。如果可以的话,它将使我免于一些不太合适的重型重构。

无论如何,在下面的网格中,我有主DataGrid列/行以及子行的RowDetailsTemplate。主DataGrid绑定到Positions集合,RowDetailsTemplate绑定到Taxlots集合。 Taxlots集合中的项目没有Description或Ticker属性,而Positions集合中的项目没有。

是否可以将RowDetailsTemplate中的Ticker和Description列绑定到主DataGrid中的相应列?

以下简化的XAML:

        <DataGrid x:Name="SecurityDataGrid"
                  ItemsSource="{Binding Positions,
                                NotifyOnSourceUpdated=True, 
                                UpdateSourceTrigger=PropertyChanged}">
            <DataGrid.RowDetailsTemplate>
                <DataTemplate>
                    <DataGrid ItemsSource="{Binding Taxlots}">
                        <DataGrid.Columns>
                            <DataGridTextColumn Binding="{Binding Ticker}"/>
                            <DataGridTextColumn Binding="{Binding Description}"/>
                            <DataGridTextColumn Binding="{Binding Shares}"/>
                        </DataGrid.Columns>
                    </DataGrid>
                </DataTemplate>
            </DataGrid.RowDetailsTemplate>
            <DataGrid.Columns>
                <DataGridTextColumn Width="Auto" Header="Ticker" Binding="{Binding Path=Ticker, Mode=OneWay}"
                                    TextOptions.TextFormattingMode="Display" />
                <DataGridTextColumn Width="Auto" Header="Description" Binding="{Binding Path=Description, Mode=OneWay}"
                                    TextOptions.TextFormattingMode="Ideal" />
                <DataGridTextColumn Width="Auto" Header="Shares" Binding="{Binding SharesOwned, Mode=OneWay, Converter={StaticResource DecimalToStringConverter}}"
                                    CellStyle="{StaticResource CellStyleRight}" />                    
            </DataGrid.Columns>
        </DataGrid>

1 个答案:

答案 0 :(得分:0)

CodingYoshi钉了它。我怀疑这将是一个FindAncestor RelativeSource绑定,但我在XAML这么新,我不知道该怎么做。我用这个结束了:

Binding="{Binding RelativeSource={RelativeSource FindAncestor,
          AncestorType={x:Type DataGrid}},
          Path=DataContext.*PropertyName*}"