2010-11-18 6 views
1

ピボットコントロール内には、ItemTemplate用のDataTemplate(TestItemTemplate)があります。ページのDataContextは{Binding RelativeSource = {RelativeSource Self}}に設定され、Pivo​​tControlのItemsSourceは観察可能なコレクションにバインドされます。ピボットコントロール内のDataTemplate内のlistPickerへのコレクションのバインド

ピボットコントロールのDataTemplateの中に、私はIEnumerableにバインドするListPickerを持っています。の公開プロパティを作成しました。IEnumerable TestEntries = "One Two Three" .Split();

listpickerはバインドされた項目を表示しません。私は

<phone:PhoneApplicationPage.Resources> 
    <DataTemplate x:Key="TestItemTemplate"> 
    <Grid Margin="0,-25,0,0">   
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto" x:Name="AnotherContainer" /> 
      <RowDefinition Height="300" x:Name="TestDescriptionContainer" /> 
      <RowDefinition Height="Auto" x:Name="SaveCancelDeleteContainer" />    
     </Grid.RowDefinitions> 

      <toolkit:ListPicker x:Name="lstPicker" Grid.Row="0" ItemsSource="{Binding TestEntries}" Header="situation" FullModeHeader="SITUATIONS"> 
       <toolkit:ListPicker.ItemTemplate> 
        <DataTemplate> 
         <StackPanel Orientation="Horizontal"> 
          <TextBlock Text="{Binding}" Margin="4 0 0 0"/> 
         </StackPanel> 
        </DataTemplate> 
       </toolkit:ListPicker.ItemTemplate> 
       <toolkit:ListPicker.FullModeItemTemplate> 
        <DataTemplate> 
         <StackPanel Orientation="Horizontal" Margin="16 21 0 20"> 
          <TextBlock Text="{Binding}" Margin="4 0 0 0" FontSize="43" FontFamily="{StaticResource PhoneFontFamilyLight}"/> 
         </StackPanel> 
        </DataTemplate> 
       </toolkit:ListPicker.FullModeItemTemplate> 
      </toolkit:ListPicker> 

<TextBox Grid.Row="1" Text="{Binding Description}" TextWrapping="Wrap" VerticalAlignment="Top" d:LayoutOverrides="Width" AcceptsReturn="True" Height="300"/> 

     <StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Center" Margin="0,2,0,0" > 
      <Button x:Name="SaveButton" Content="Save" Margin="5" Click="SaveButton_Click" Width="140" /> 
      <Button x:Name="CancelButton" Content="Cancel" Margin="5" Click="CancelButton_Click" Width="140" /> 
      <Button x:Name="DeleteButton" Content="Delete" Margin="5" Click="DeleteButton_Click" Width="140" /> 
     </StackPanel>  
    </Grid> 
    </DataTemplate> 
</phone:PhoneApplicationPage.Resources> 

<!--LayoutRoot is the root grid where all page content is placed--> 
<Grid x:Name="LayoutRoot" Background="Transparent"> 
    <!--Pivot Control--> 

    <controls:Pivot 
     x:Name="PivotControl" 
     Title="{StaticResource AppName}" 
     ItemsSource="{Binding TestEntries}" 
     ItemTemplate="{StaticResource TestItemTemplate}" 
     SelectionChanged="PivotControl_SelectionChanged" 
     > 
    </controls:Pivot> 
</Grid> 
+0

任意の提案ですか? –

答えて

1

(PivotControlの兄弟として、それがピッカー内の3つの文字列を示して)データテンプレートの外listpickerを配置する場合、私は自分自身でこれを考え出しました。他の人が同じ問題に遭遇した場合の解決方法は次のとおりです。 これは、ページの初期化メソッドまたはロードされたイベントハンドラ、つまりDataTemplate内のListPickerがまだnullであるため、ListPickerがDataTemplate内にあるときにDataContextを正しく設定する必要があると思います。コントロールの独自のLoadedイベントハンドラを使用して初期化します。

ListPickerのDataContextを、独自のLoadedイベントハンドラ内に設定する必要がありました。このような何か:

private void lstTestEntriesPicker_Loaded(object sender, RoutedEventArgs e) 
{ 
    ListPicker lstTestEntriesPicker= VisualElementHelper.FindName<ListPicker>("lstTestEntriesPicker", this); 
    if (lstTestEntriesPicker!= null) 
    { 
     lstTestEntriesPicker.DataContext = TestEntries; 
    } 
} 

XAMLは次のようになります。

 <toolkit:ListPicker x:Name="lstTestEntriesPicker" ItemsSource="{Binding}" Grid.Row="0" Header="TestEntries" FullModeHeader="TestEntries" Loaded="lstTestEntriesPicker_Loaded"> 
      <toolkit:ListPicker.ItemTemplate> 
       <DataTemplate> 
        <StackPanel Orientation="Horizontal"> 
         <TextBlock Text="{Binding}" Margin="4 0 0 0"/> 
        </StackPanel> 
       </DataTemplate> 
      </toolkit:ListPicker.ItemTemplate> 
      <toolkit:ListPicker.FullModeItemTemplate> 
       <DataTemplate> 
        <StackPanel Orientation="Horizontal" Margin="16 21 0 20"> 
         <TextBlock Text="{Binding}" Margin="4 0 0 0" FontSize="43" FontFamily="{StaticResource PhoneFontFamilyLight}"/> 
        </StackPanel> 
       </DataTemplate> 
      </toolkit:ListPicker.FullModeItemTemplate> 
     </toolkit:ListPicker> 
関連する問題