如何在 Pivot 中找到子项并使其可见 false
How to find a child item inside Pivot and make it visible false
我有一个以子节点作为网格的 Pivot。我试图在枢轴选择更改时找到该网格。我的代码是这样的
<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。我在这里做错了什么?
在您的 Xaml 中您有一个 Grid
而在您的 C# 代码隐藏中您有一个 GridView
,这是问题所在吗?尽管名称相似,但它们是完全不同的控件。
我有一个以子节点作为网格的 Pivot。我试图在枢轴选择更改时找到该网格。我的代码是这样的
<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。我在这里做错了什么?
在您的 Xaml 中您有一个 Grid
而在您的 C# 代码隐藏中您有一个 GridView
,这是问题所在吗?尽管名称相似,但它们是完全不同的控件。