2011-07-11 9 views
0

リストボックスの選択変更イベントが発生しない理由について私の頭を傷つけています。私は、これは、ビューの分離コードであるWP7リストボックス選択変更イベントがコンテンツコントロールスタイルで発生しない

<Style x:Key="PanoramaItemStyle" TargetType="ContentControl"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="ContentControl"> 
       <Grid> 
        <controls:PanoramaItem x:Name="ItemLocationPanoramaItem" Header="{Binding TagName}"> 
         <ListBox ItemsSource="{Binding ItemLocators}" Height="496" SelectedItem="{Binding SelectedItemLocation, Mode=TwoWay}" SelectionChanged="ItemLocatorsList_SelectionChanged" > 
          <ListBox.ItemsPanel> 
           <ItemsPanelTemplate > 
            <StackPanel Orientation="Vertical" ScrollViewer.VerticalScrollBarVisibility="Auto" /> 
           </ItemsPanelTemplate> 
          </ListBox.ItemsPanel> 
          <ListBox.ItemTemplate> 
           <DataTemplate> 
            <StackPanel> 
             <StackPanel Orientation="Horizontal" Margin="0,0,0,17"> 
              <StackPanel Width="311"> 
               <TextBlock Text="{Binding Item.Name}" TextWrapping="Wrap" Style="{StaticResource PhoneTextLargeStyle}"/> 
               <TextBlock Text="{Binding Location.Description}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/> 
              </StackPanel> 
             </StackPanel> 
            </StackPanel> 
           </DataTemplate> 
          </ListBox.ItemTemplate> 
         </ListBox> 
        </controls:PanoramaItem> 
        <ContentPresenter/> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
    <Setter Property="Foreground" Value="White"/> 
</Style> 

WPF/XAMLに...新しいの種類の背後にあるコードで動的に作成されているpanaromaアイテムを持っています。

public LocationGroups() 
    { 
     InitializeComponent(); 
     LocationGroupsPanaroma.DefaultItem = LocationGroupsPanaroma.Items[0]; 
     viewModel = this.DataContext as LocationGroupsViewModel; 
     CreateDynamicPanaromaItems(); 
    } 


    private void CreateDynamicPanaromaItems() 
    { 
     foreach (Model.LocationGroup group in viewModel.LocationGroups) 
     { 
      if (group.TotalItems > 0) 
      { 
       PanoramaItem pi = new PanoramaItem(); 
       pi.Header = group.Name; 
       pi.Orientation = System.Windows.Controls.Orientation.Horizontal; 
       ItemLocationListViewModel itemLocationViewModel = viewModel[group.LocationGroupId]; 
       pi.DataContext = itemLocationViewModel; 
       pi.Style = Resources["PanoramaItemStyle"] as Style; 
       LocationGroupsPanaroma.Items.Add(pi); 
      } 
     } 

    } 
+0

あなたは何をあなたについて、もう少し情報を提供する必要があるとしています実際に問題があります!リストボックスのSelectionChangedイベントは発生していませんが、コードスニペットはすべてパノラマコントロールに移入することです。まず、問題を説明する最も単純な例になるまでコードを単純化してから、質問を更新してください。 – ColinE

+0

あなたの質問は何ですか?あなたのインクルードされたコードには、id間違いなくリストボックスとして託されている。 SelectionChanegdイベントへの参照もありません。広告なぜ 'mvvm-light'タグ?もう一度、それを参照するコードには何もありません。 –

+0

元の投稿のxamlが表示されなかったのはなぜですか? –

答えて

0

すなわち背後にあるコードなしで、動的にMVVMを使用してパノラマ項目やリストボックスを生成する方法についてthis postthis postに私の答えを参照してください。

1

あなたはMVVMは、あなたが<>発言のためにあなたのコードを記入(以下んでした点灯使用している場合:

<i:Interaction.Triggers> 
    <i:EventTrigger EventName="SelectionChanged"> 
    <mvvm:EventToCommand 
    Command="{Binding <yourviewmodel>.<yourrelaycommand>, Mode=OneWay, Source={StaticResource Locator}}" CommandParameter="{Binding SelectedValue, ElementName=<nameofyourlistbox>}"/> 
    </i:EventTrigger>