Как найти дочерний элемент в Pivot и сделать его видимым false - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть Сводка с ребенком в качестве Сетки. Я пытаюсь найти эту сетку при изменении выбора оси. Мой код выглядит так:

  <Pivot x:Name="mainContentPivot"  SelectionChanged="mainContentPivot_SelectionChanged" ItemsSource="{x:Bind viewModel.headerElement, Mode=OneWay}" >

        <Pivot.HeaderTemplate>
            <DataTemplate x:DataType="models:HeaderUIModel">
                <TextBlock Text="{Binding Name, Mode=OneWay}"/>
            </DataTemplate>
        </Pivot.HeaderTemplate>
        <Pivot.ItemTemplate>
            <DataTemplate>
                <Grid Name="grd">

                </Grid>
            </DataTemplate>

        </Pivot.ItemTemplate>
    </Pivot>


   private void mainContentPivot_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        PivotItem item = (sender as Pivot).ContainerFromItem((sender as Pivot).SelectedItem) as PivotItem;
        var gridView = FindElementInVisualTree<GridView>(item);
    }

    private T FindElementInVisualTree<T>(DependencyObject parentElement) where T : DependencyObject
    {
        var count = VisualTreeHelper.GetChildrenCount(parentElement);
        if (count == 0) return null;

        for (int i = 0; i < count; i++)
        {
            var child = VisualTreeHelper.GetChild(parentElement, i);
            if (child != null && child is T)
                return (T)child;
            else
            {
                var result = FindElementInVisualTree<T>(child);
                if (result != null)
                    return result;
            }
        }
        return null;
    }

При изменении выбранного элемента я получаю gridView как NULL всегда. Что я тут не так делаю?

1 Ответ

1 голос
/ 03 апреля 2020

В вашем Xaml у вас есть Grid, тогда как в вашем C# коде есть GridView, это проблема? Это абсолютно разные элементы управления, несмотря на похожее имя.

...