示例:
<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>
如果我访问TextBlock
内的DataTemplate
,我将可以访问有关绑定路径的信息。
但我不知道如何找到(从TextBlock
开始)包含GridViewColumn
(位于GridViewRowPresenter
列列表中)并将其与网格GridViewColumn
进行比较(从GridViewHeaderRowPresenter
列列表中)获取标题的名称。
最后我应该有对:xx-&gt; XX,yy-&gt; YY
我可以使用以下代码查找TextBlocks
内所有ListView
的列表:
GridViewRowPresenter gvrp = ControlAux.GetVisualDescendants<GridViewRowPresenter>(element).FirstOrDefault();
IEnumerable<TextBlock> entb = GetVisualDescendants<TextBlock>(gvrp);
我可以找到所有GridViewColumnHeaders
的列表:
GridViewHeaderRowPresenter gvhrp = ControlAux.GetVisualDescendants<GridViewHeaderRowPresenter>(element).FirstOrDefault();
我找不到TextBlocks
和GridViewColumns
...
我希望这是可以理解的。
答案 0 :(得分:0)
GridViewColumns是它们永远不会出现在UI中的任何位置的抽象对象,您可以尝试命名列并使用ElementName
将其绑定到您需要它的控件的标记,或者如果它失败Source
} x:Reference
名称。