gpt4 book ai didi

c# - 如何从 xaml 中该行中的模板化单元格绑定(bind)到 DataGridRow 项目?

转载 作者:太空狗 更新时间:2023-10-30 01:22:37 24 4
gpt4 key购买 nike

什么绑定(bind)用于将 DataGridTemplateColumn 的单元格模板中定义的元素绑定(bind)到该单元格的 DataGridRow 的绑定(bind)数据项?

例如,假设 DataGrid 项是具有 Name 属性的对象。下面的代码需要什么绑定(bind)才能将 TextBlock 文本绑定(bind)到父行表示的数据项的“名称”属性?

(是的,在示例中我可以只使用 DataGridTextColumn,但我只是为了举例而简化。)

<DataGrid ItemsSource="{Binding Items}">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Name">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding ???}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>

最佳答案

您不需要任何特殊类型的绑定(bind) - TextBlock 从行(设置为绑定(bind)项)继承数据上下文。

所以你可以这样做:

<TextBlock Text="{Binding Name}" />

要查看数据上下文实际上是由 TextBlock 继承的,您可以在控件层次结构中设置更接近 TextBlock 的不同数据上下文。 TextBlock 现在将改用该数据上下文。

在此示例中,StackPanel 的名称将显示在 TextBlock 中,而不是 DataGrid 上绑定(bind)行对象上的名称:

<DataTemplate>
<StackPanel x:Name="panel1" DataContext="{Binding RelativeSource={RelativeSource Self}}">

<!-- Binds to Name on the Stackpanel -->
<TextBlock Text="{Binding Name}" />

<!-- Binds to Name on object bound to DataGridRow -->
<TextBlock Text="{Binding DataContext.Name,
RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGridRow}}" />

</StackPanel>
</DataTemplate>

关于c# - 如何从 xaml 中该行中的模板化单元格绑定(bind)到 DataGridRow 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13201286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com