Пример:
<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-> XX, yy-> 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
...
Надеюсь, это понятно.