2012-02-29 9 views
1

パノラマコントロールのアイテムテンプレートがあります。そのテンプレートでは、私はlistItemテンプレートでリストボックスを持っています。リストボックス内の選択されたイベントの変更に問題があります。Windows Phone用のpanorama.ItemTemplateのListBoxのSelectionChangedイベント?

<phone:PhoneApplicationPage.Resources> 
    <CollectionViewSource x:Key="SlideItemList" Filter="collectionView_Filter"/> 
</phone:PhoneApplicationPage.Resources> 

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

    <!--Panorama control--> 
    <controls:Panorama x:Name="AppPano" ItemsSource="{Binding SlidesCollections}" SelectionChanged="AppPano_SelectionChanged" > 
     <controls:Panorama.Background> 
      <ImageBrush ImageSource="PanoramaBackground.png"/> 
     </controls:Panorama.Background> 

     <controls:Panorama.ItemTemplate> 
      <DataTemplate> 
       <Grid VerticalAlignment="Top" HorizontalAlignment="Left" Margin="0,-100,0,0"> 
        <StackPanel HorizontalAlignment="Center" Height="250" Width="200" VerticalAlignment="Top"> 
         <TextBlock Text="{Binding Title}" HorizontalAlignment="Center" FontSize="200" Width="Auto"/> 
        </StackPanel> 
        <ListBox x:Name="ItemsList" ItemsSource="{Binding Source={StaticResource SlideItemList}}" Margin="0,250,0,0" VerticalAlignment="Top" SelectionChanged="ItemsList_SelectionChanged" Height="430"> 
         <ListBox.ItemTemplate> 
          <DataTemplate> 
           <StackPanel x:Name="ImgStack" HorizontalAlignment="Left" Height="430" VerticalAlignment="Top" Width="370" Margin="50,0,0,0"> 
            <Image Height="350" Width="360" Source="{Binding Image}"/> 
            </StackPanel> 
          </DataTemplate> 
         </ListBox.ItemTemplate> 
        </ListBox> 
       </Grid> 
      </DataTemplate> 
     </controls:Panorama.ItemTemplate> 
    </controls:Panorama> 
</Grid> 

Xaml.cs

private void keyItemsList_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     var listbox = (ListBox)sender; 
     var conGen = listbox.ItemContainerGenerator; 
     var item = (UIElement)conGen.ContainerFromIndex(listbox.SelectedIndex); 

     if (item != null) 
     { 
      int selectedItemList = listbox.SelectedIndex; 
      if (sLasListItem != selectedItemList) 
      { 
       // navigate to another page 
       sLasListItem = selectedItemList; 
      } 
     } 
    } 

バインディングUI要素が完璧に動作します。

問題: 1. 1つのパノラマアイテムページのリストから新しいアイテムを選択すると、そのアイテムはすべてのパノラマアイテムの同じ選択変更イベントを起動します。

例: 4つのパノラマアイテムがあるとします。最初のパノラマアイテムリストボックスから2番目のアイテムを選択しました。この選択変更イベントは4回実行されました。

リストから新しいアイテムを選択すると、このイベントは対応するパノラマアイテムに対して1回だけ起動するはずです。

PLSのは、あなたが同じリストを4回結合しているためです

+0

それぞれのパノラマコントロールと各リストボックスには、独自のselectionshangedイベントが割り当てられていますか? – earthling

答えて

1

...それを行う方法を、私を示唆しています。

各リストは同じデータなので、選択した項目をそのビューの1つのビューで変更すると、実際にはフィルタされたリストに変更されます。

代わりに、ビューモデルで別のリストを作成する必要があります。

+0

ありがとう!同じ問題があっても、あなたの答えに基づいて私はそれを解決することができました! @著者:これを解答としてマークしてください –

関連する問題