例子:
<ListView Name="lvAnyList" ItemsSource="{Binding}">
<ListView.View>
<GridView>
<GridViewColumn Header="xx" DisplayMemberBinding="{Binding XX}" CellTemplate="{DynamicResource MyDataTemplate}"/>
<GridViewColumn Header="yy">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding YY}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
如果我访问 DataTemplate
中的 TextBlock
,我将可以访问有关绑定(bind)路径的信息。
但我不知道如何找到(从 TextBlock
开始)它包含 GridViewColumn
(在 GridViewRowPresenter
列列表中)并进行比较它到网格的 GridViewColumn
(来自 GridViewHeaderRowPresenter
列列表)以获取标题的名称。
最后我应该有对:xx->XX, yy->YY
我可以使用以下命令在 ListView
中找到所有 TextBlocks
的列表:
GridViewRowPresenter gvrp = ControlAux.GetVisualDescendants<GridViewRowPresenter>(element).FirstOrDefault();
IEnumerable<TextBlock> entb = GetVisualDescendants<TextBlock>(gvrp);
我可以找到所有 GridViewColumnHeaders
的列表:
GridViewHeaderRowPresenter gvhrp = ControlAux.GetVisualDescendants<GridViewHeaderRowPresenter>(element).FirstOrDefault();
而且我找不到 TextBlocks
和 GridViewColumns
之间的联系...
我希望这是可以理解的。
最佳答案
GridViewColumns 是抽象对象,它们从不出现在 UI 的任何地方,您可以尝试使用 ElementName
命名该列并将其绑定(bind)到您需要的控件的标签,或者如果失败了 Source
名称上带有 x:Reference
。
关于wpf - 从 DataTemplate 中的控件获取 GridViewColumn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8231139/