2011-07-24 20 views
1

リストボックスに静的コンテキストメニューを作成しています。コンテキストメニューが表示されますが、そのクリックイベントは機能しません。wpfのリストボックスのコンテキストメニューイベント

<Canvas x:Name="LeftCanvas" Grid.Column="0" Grid.Row="1" Margin="5,0,0,0"> 
    <StackPanel> 
     <TextBlock Text="Unseated Guests" Background="Blue" Foreground="White" FontFamily="Verdana" FontSize="11" FontWeight="Bold" Height="17" Width="150" HorizontalAlignment="Left" TextAlignment="Center" Padding="0,4,5,2"></TextBlock> 
     <ListBox x:Name="UnseatedPersons" ItemsSource="{Binding}" Height="218" Width="150" BorderBrush="Blue" BorderThickness="2" HorizontalAlignment="Left" Padding="3,2,2,2" src:FloorPlanClass.DragEnabled="true" MouseEnter="UnseatedPersons_MouseEnter" 
      MouseLeave="SourceListBox_MouseLeave"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <DockPanel> 
         <DockPanel.Resources> 
          <ContextMenu x:Key="ctxtmenu"> 
           <MenuItem Header="Archive Info" Click="bt_click"></MenuItem> 
           <MenuItem Header="Guest Info"></MenuItem> 
          </ContextMenu> 
         </DockPanel.Resources> 
         <Image Name="imgPerson" Source="{Binding ImagePath}" ContextMenu="{StaticResource ctxtmenu}"></Image> 
         <TextBlock Name="txtPersonName" Text="{Binding PersonName}" Padding="2,4,0,0" ContextMenu="{StaticResource ctxtmenu}"></TextBlock> 
        </DockPanel> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
     </StackPanel> 

    </Canvas> 

どうすればこの問題を解決できますか?

+0

なぜあなたは 'Canvas'を使用していますか?ほとんどの場合、他のパネルの1つがより良い選択です。 – svick

+0

私はcanvas.actuallyにアプリケーションの他のコントロールを追加する必要があることを意味する – user644194

+0

'src:FloorPlanClass.DragEnabled'とイベントハンドラ属性を削除した後、私のコードが動作します。画像をクリックすると、コンテキストメニューが表示されます。 – svick

答えて

1

私は、なぜ完全にわからないんだけど、全体DockPanelのコンテキストメニューを設定すると動作するようです:

<DockPanel> 
    <DockPanel.ContextMenu> 
     <ContextMenu> 
      <MenuItem Header="Archive Info" Click="bt_click" /> 
      <MenuItem Header="Guest Info" /> 
     </ContextMenu> 
    </DockPanel.ContextMenu> 
    <Image Name="imgPerson" Source="{Binding ImagePath}" /> 
    <TextBlock Name="txtPersonName" Text="{Binding PersonName}" Padding="2,4,0,0" /> 
</DockPanel> 
+0

おかげでそれが解決しました。:) – user644194

関連する問題