C# XAML DataGrid-绑定到主行数据的行详细信息

C# XAML DataGrid-绑定到主行数据的行详细信息,c#,xaml,datagrid,C#,Xaml,Datagrid,我在使用datagrid时遇到了问题,我想知道是否可以以某种方式使绑定工作。如果可以的话,它将使我免于一些不太合适的繁重重构 无论如何,在下面的网格中,我有主DataGrid列/行以及子行的RowDetailsTemplate。主数据网格绑定到Positions集合,RowDetailsTemplate绑定到Taxlots集合。Taxlots集合中的项目没有描述或Ticker属性,而Positions集合中的项目有 是否可以将RowDetailsTemplate中的Ticker和Descript

我在使用datagrid时遇到了问题,我想知道是否可以以某种方式使绑定工作。如果可以的话,它将使我免于一些不太合适的繁重重构

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

是否可以将RowDetailsTemplate中的Ticker和Description列绑定到主数据网格中的相应列

简化的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>

CodingYoshi搞定了。我怀疑这将是一个FindAncestor或RelativeSource绑定,但我对XAML是如此陌生,以至于我不知道该怎么做。我最后用了这个:

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

科丁吉希搞定了。我怀疑这将是一个FindAncestor或RelativeSource绑定,但我对XAML是如此陌生,以至于我不知道该怎么做。我最后用了这个:

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

请看,我认为
相对资源
可能有效。这做得很好。我希望我能给你荣誉,但我认为评论不允许这样。太好了!我希望你在链接中通过向上投票来认可这个答案。我现在这样做了,谢谢。请看,我认为
RelativeSource
可能有效。这做得很完美。我希望我能给你荣誉,但我认为评论不允许这样。太好了!我希望你在链接中通过向上投票来认可这个答案。我现在做到了,谢谢。