2010-11-18 11 views
1

'daki DataTemplate içinde liste toplama için ciltleme koleksiyonu Pivot denetiminin içinde, ItemTemplate için bir DataTemplate (TestItemTemplate) var. Sayfa için DataContext, {Binding RelativeSource = {RelativeSource Self}} olarak ayarlandı ve PivotControl için ItemsSource, gözlenebilir bir koleksiyona bağlandı.PivotControl

Pivot kontrolünün DataTemplate'inde, IEnumerable'a bağlamak istediğim bir ListPicker'ım var. IEnumerable TestEntries = "One Two Three" adlı bir kamu mülkü oluşturdum .Split();

Listpicker, ancak ilişkili öğeleri göstermiyor. Veri şablonuna dışında listpicker yerleştirirseniz başıma bu anladım

<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

herhangi bir öneri? –

cevap

1

(PivotControl bir kardeş olarak, bu seçicinizde üç dizeleri gösterir). Başkalarının aynı konuya girmesi durumunda çözüm budur. Bence bu, DataPencereyi bir DataTemplate içinde olduğunda düzgün bir şekilde ayarlamak için gereklidir, çünkü Sayfadaki başlatma yöntemi veya yüklü olay işleyicisi, DataTemplate içindeki ListPicker hala boş. Başlatmak için denetimin kendi Loaded olay işleyicisini kullanın.

ListPicker öğesinin DataContext'ini kendi Yüklü olay işleyicisine yerleştirmek zorunda kaldım. Böyle bir şey:

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

XAML şöyle görünür:

 <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>