我遇到了数据网格的问题,我想知道我是否可以以某种方式进行绑定工作。如果可以的话,它将使我免于一些不太合适的重型重构。
无论如何,在下面的网格中,我有主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>
答案 0 :(得分:0)
CodingYoshi钉了它。我怀疑这将是一个FindAncestor RelativeSource绑定,但我在XAML这么新,我不知道该怎么做。我用这个结束了:
Binding="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type DataGrid}},
Path=DataContext.*PropertyName*}"