これは私の最初の投稿ですので、どのように詳細にする必要があるのか分かりませんし、物事を説明するのに最善ではありませんが、それはショット。データバインドされたピボットの2歳以上の子供にアクセスできない
だから、私のアプリのメインページに、それは動的なピボットページで、次のページに送信しますテキストブロック上のユーザーがクリックするとき:
<Grid x:Name="LayoutRoot" Background="Transparent" DataContext="{Binding Products}">
<!--Pivot Control-->
<controls:Pivot x:Name="Pivot" Title="{Binding name}" ItemsSource="{Binding pivots}">
<controls:Pivot.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding title}" />
</DataTemplate>
</controls:Pivot.HeaderTemplate>
<controls:Pivot.ItemTemplate>
<DataTemplate>
<ListBox Margin="0,0,-12,0" ItemsSource="{Binding partners}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin="0,0,0,17" Width="432" Height="58">
<TextBlock Text="{Binding name}" TextWrapping="Wrap" Tap="showDetails" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DataTemplate>
</controls:Pivot.ItemTemplate>
</controls:Pivot>
</Grid>
それは何のDataContextがすべき指定するパラメータを渡しますページ上で使用され、ピボットを選択する必要があります。 OnNavigation、それはその後、それらのパラメータを解析:
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) {
base.OnNavigatedTo(e);
string selectedType = this.NavigationContext.QueryString["type"];
string selectedPivot = this.NavigationContext.QueryString["pivot"];
int selectedIndex = 0;
switch (selectedType) {
case "product":
LayoutRoot.DataContext = App.ViewModel.Products;
selectedIndex = Array.IndexOf(App.ViewModel.ProductTypes, selectedPivot);
break;
case "service":
LayoutRoot.DataContext = App.ViewModel.Services;
selectedIndex = Array.IndexOf(App.ViewModel.ServiceTypes, selectedPivot);
break;
default:
LayoutRoot.DataContext = App.ViewModel.Products;
break;
}
Pivot.SelectedIndex = selectedIndex;
PivotItem pivotItem = Pivot.ItemContainerGenerator.ContainerFromItem(Pivot.SelectedItem) as PivotItem;
this.selectedList = FindFirstElementInVisualTree<ListBox>(pivotItem);
}
FindFirstElementInVisualTreeはhere
からだからここに私の問題ですされています この私が最初のデータセットと第一のピボットを選択すると、すべてがそうでなければ、それは言って、正常に動作しますpivotItemには子がなく、エラーがスローされます。
私はこれを回避するために何ができるのですか?たぶん私はこれについてすべて間違っているつもりです。詳細が必要な場合は、私に知らせてください。
投稿を読んでください。私は言及された問題を抱えているようではありません。次の前のピボットアイテム以外のピボットアイテムを選択できます。 私は回避策を見ましたが、どのように適用されたかはわかりませんでした。 – JustMaier