2015-10-19 32 views
1

所以我知道那裏有類似的問題,但我仍然困惑,希望有人能幫助我。我有一個列表框可以選擇一個項目,它會添加一個屬性。我現在有一個上下文菜單,因爲佈局正是我所需要的,但我努力使我的點擊事件起作用,目前我不能對我的任何東西進行任何操作,但是我已經爲列表中的代碼添加了代碼框工作,有人可以幫我在上下文菜單上的lsitbox點擊事件的工作:)請問?如何從列表框中選擇項目到上下文菜單

private void Selector_OnSelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     var listBox = sender as ListBox; 
     if (listBox.SelectedItems.Count == 0) 
     { 
      return; 
     } 
     var item = listBox.SelectedItems[0] as PropertyNode; 
     viewModel.AddPropertyNode(item); 
    } 

編輯

這是我的XAML,我有我的上下文菜單剛纔

<DataTemplate x:Key="AddNodeTemplate"> 
     <Border BorderThickness="1" Background="#F7F7F7"> 
      <Border.BorderBrush> 
       <DrawingBrush Viewport="8,8,8,8" ViewportUnits="Absolute" TileMode="Tile"> 
        <DrawingBrush.Drawing> 
         <DrawingGroup> 
          <GeometryDrawing Brush="#F7F7F7"> 
           <GeometryDrawing.Geometry> 
            <GeometryGroup> 
             <RectangleGeometry Rect="0,0,50,50"/> 
             <RectangleGeometry Rect="50,50,50,50"/> 
            </GeometryGroup> 
           </GeometryDrawing.Geometry> 
          </GeometryDrawing> 
         </DrawingGroup> 
        </DrawingBrush.Drawing> 
       </DrawingBrush> 
      </Border.BorderBrush> 
      <StackPanel> 
       <Button x:Name="ButtonAdd" Click="ButtonAdd_Click" Height="30" Width="130" Tag="{Binding RelativeSource={RelativeSource AncestorType={x:Type syncfusion:Node}}}"> 
        <Button.Style> 
         <Style TargetType="Button"> 
          <Setter Property="Template"> 
           <Setter.Value> 
            <ControlTemplate TargetType="Button"> 
             <Grid Background="#F7F7F7"> 
              <Grid.ColumnDefinitions> 
               <ColumnDefinition Width="25"/> 
               <ColumnDefinition/> 
              </Grid.ColumnDefinitions> 
              <Image Source="Images/icon_plus.bmp" HorizontalAlignment="Left" Margin="5,0,0,0"/> 
              <TextBlock Text="Add Property" HorizontalAlignment="Center" Grid.Column="1" VerticalAlignment="Center" Foreground="LightGray" FontStyle="Italic" FontSize="12"/> 
             </Grid> 
            </ControlTemplate> 
           </Setter.Value> 
          </Setter> 
          <Setter Property="Background" Value="#F7F7F7"/> 
         </Style> 
        </Button.Style> 
        <Button.ContextMenu> 
         <ContextMenu> 
          <MenuItem Header="_Copy Existing" Icon="{StaticResource ImageCopy}" ItemsSource="{Binding Path=AvailableProperties}" Click="MenuItem_Click"> 
           <MenuItem.Resources> 
            <Style TargetType="MenuItem"> 
             <Style.Resources> 
              <Image x:Key="img" x:Shared="False" Width="12" Height="12" Source="{Binding Icon, Converter={StaticResource ImageToSourceConverter}}" 
                Margin="3" VerticalAlignment="Center"/> 
              <Style TargetType="ContentPresenter"> 
               <Style.Triggers> 
                <Trigger Property="ContentSource" Value="Icon"> 
                 <Setter Property="ContentTemplate"> 
                  <Setter.Value> 
                   <DataTemplate> 
                    <Image Source="{Binding}"/> 
                   </DataTemplate> 
                  </Setter.Value> 
                 </Setter> 
                </Trigger> 
               </Style.Triggers> 
              </Style> 
             </Style.Resources> 
             <Setter Property="Icon" Value="{Binding Icon, Converter={StaticResource ImageToSourceConverter}}"/> 
             <Style.Triggers> 
              <Trigger Property="Role" Value="SubMenuItem"> 
               <Setter Property="HeaderTemplate"> 
                <Setter.Value> 
                 <DataTemplate> 
                  <StackPanel Orientation="Horizontal"> 
                   <ContentPresenter Content="{Binding Name}"/> 
                  </StackPanel> 
                 </DataTemplate> 
                </Setter.Value> 
               </Setter> 
              </Trigger> 
             </Style.Triggers> 
            </Style> 
           </MenuItem.Resources> 
          </MenuItem> 
          <MenuItem Header="Upscale well logs"/> 
          <MenuItem Header="Upscale well_top attributes"/> 
          <MenuItem Header="Upscale point attributes" Icon="{StaticResource ImagePointSet}"> 
          </MenuItem> 
          <MenuItem Header="Calculate"/> 
         </ContextMenu> 
        </Button.ContextMenu> 
       </Button> 
     </StackPanel> 
     </Border> 
    </DataTemplate> 

代碼背後的上下文菜單,我知道這是不是很多,但,這是因爲盡我所能

private void MenuItem_Click(object sender, RoutedEventArgs e) 
    { 
     var menuItem = sender as MenuItem; 
    } 

電流輸出

enter image description here

+0

您是否已將點擊事件添加到上下文菜單項?如果您編輯上下文菜單並雙擊菜單項,它將添加事件處理程序,然後您只需將代碼放在那裏就像列表框一樣。 –

+0

目前你的代碼編譯和運行?這裏有一條規則,除非在具有相同Style的元素上設置事件,否則不能在Style範圍中設置事件處理程序。 –

+0

是啊我的代碼確實編譯和運行相當開心我會告訴你我目前有什麼 –

回答

0

經過大量谷歌搜索和詢問周圍我找到了答案,我想我張貼的人誰可能有這個問題也是,只是它在我的問題的形式,這應該是很容易的編輯:)

<DataTemplate x:Key="AddNodeTemplate"> 
     <Border BorderThickness="1" Background="#F7F7F7"> 
      <Border.BorderBrush> 
       <DrawingBrush Viewport="8,8,8,8" ViewportUnits="Absolute" TileMode="Tile"> 
        <DrawingBrush.Drawing> 
         <DrawingGroup> 
          <GeometryDrawing Brush="#F7F7F7"> 
           <GeometryDrawing.Geometry> 
            <GeometryGroup> 
             <RectangleGeometry Rect="0,0,50,50"/> 
             <RectangleGeometry Rect="50,50,50,50"/> 
            </GeometryGroup> 
           </GeometryDrawing.Geometry> 
          </GeometryDrawing> 
         </DrawingGroup> 
        </DrawingBrush.Drawing> 
       </DrawingBrush> 
      </Border.BorderBrush> 
      <StackPanel> 
       <Button x:Name="ButtonAdd" Click="ButtonAdd_Click" Height="30" Width="130" Tag="{Binding RelativeSource={RelativeSource AncestorType={x:Type syncfusion:Node}}}"> 
        <Button.Style> 
         <Style TargetType="Button"> 
          <Setter Property="Template"> 
           <Setter.Value> 
            <ControlTemplate TargetType="Button"> 
             <Grid Background="#F7F7F7"> 
              <Grid.ColumnDefinitions> 
               <ColumnDefinition Width="25"/> 
               <ColumnDefinition/> 
              </Grid.ColumnDefinitions> 
              <Image Source="Images/icon_plus.bmp" HorizontalAlignment="Left" Margin="5,0,0,0"/> 
              <TextBlock Text="Add Property" HorizontalAlignment="Center" Grid.Column="1" VerticalAlignment="Center" Foreground="LightGray" FontStyle="Italic" FontSize="12"/> 
             </Grid> 
            </ControlTemplate> 
           </Setter.Value> 
          </Setter> 
          <Setter Property="Background" Value="#F7F7F7"/> 
         </Style> 
        </Button.Style> 
        <Button.ContextMenu> 
         <ContextMenu> 
          <MenuItem Header="Copy Exisiting" ItemsSource="{Binding Path=AvailableProperties}" Click="AddExistingProperty_OnClick" Icon="Images/Copy.bmp" FontFamily="MS Reference Sans Serif"> 
           <MenuItem.Resources> 
            <Style TargetType="MenuItem"> 
             <Style.Resources> 
              <Image x:Key="img" x:Shared="False" Width="10" Height="10" Source="{Binding Icon, Converter={StaticResource ImageToSourceConverter}}" 
                Margin="3" VerticalAlignment="Center"/> 
              <Style TargetType="ContentPresenter"> 
               <Style.Triggers> 
                <Trigger Property="ContentSource" Value="Icon"> 
                 <Setter Property="ContentTemplate"> 
                  <Setter.Value> 
                   <DataTemplate> 
                    <Image Source="{Binding}"/> 
                   </DataTemplate> 
                  </Setter.Value> 
                 </Setter> 
                </Trigger> 
               </Style.Triggers> 
              </Style> 
             </Style.Resources> 
             <Setter Property="Icon" Value="{Binding Icon, Converter={StaticResource ImageToSourceConverter}}"/> 
             <Style.Triggers> 
              <Trigger Property="Role" Value="SubMenuItem"> 
               <Setter Property="HeaderTemplate"> 
                <Setter.Value> 
                 <DataTemplate> 
                  <StackPanel Orientation="Horizontal"> 
                   <ContentPresenter Content="{Binding Name}"/> 
                  </StackPanel> 
                 </DataTemplate> 
                </Setter.Value> 
               </Setter> 
              </Trigger> 
             </Style.Triggers> 
            </Style> 
           </MenuItem.Resources> 
          </MenuItem> 
          <MenuItem Header="Upscale well logs" Click="AddProperty_OnClick" Tag="UpscaleWellLogs" Style="{StaticResource MenuItemIcon}" Icon="Images/WellLogs.png" FontFamily="MS Reference Sans Serif"/> 
          <MenuItem Header="Upscale well top attributes" Click="AddProperty_OnClick" Tag="UpscaleWellTopAttributes" Style="{StaticResource MenuItemIcon}" Icon="Images/WellTop.png" FontFamily="MS Reference Sans Serif"/> 
          <MenuItem Header="Upscale point attributes" Click="AddProperty_OnClick" Tag="UpscalePointAttributes" Style="{StaticResource MenuItemIcon}" Icon="Images/PointSet.png" FontFamily="MS Reference Sans Serif"/> 
          <MenuItem Header="Calculate" Click="AddProperty_OnClick" Tag="Calculate" Style="{StaticResource MenuItemIcon}" Icon="Images/calculator.png" FontFamily="MS Reference Sans Serif"/> 
         </ContextMenu> 
        </Button.ContextMenu> 
       </Button> 
     </StackPanel> 
     </Border> 
    </DataTemplate> 

private void AddExistingProperty_OnClick(object sender, RoutedEventArgs e) 
    { 
     var menuItem = e.OriginalSource as MenuItem; 
     var item = menuItem.DataContext as PropertyNode; 
     viewModel.AddPropertyNode(item); 
    } 

    private void AddProperty_OnClick(object sender, RoutedEventArgs e) 
    { 
     if (MenuItemActivated != null) 
     { 
      var menuItem = sender as MenuItem; 
      var command = menuItem.Tag as CognitiveTreeMenuCommand?; 
      if (command.HasValue) 
      { 
       MenuItemActivated(this, new MenuItemEventHandlerArgs() { Command = command.Value }); 
      } 
     } 
    } 
0

請確認您已正確連接你的代碼在XAML。例如:

<ListView SelectionChanged="Selector_OnSelectionChanged"> 

我注意到我們沒有看到任何wpf xaml代碼。如果這不能回答你的問題,那麼它可能會幫助你添加一個你的xaml的一瞥,所以我們可以確定你的Selector_OnSelectionChanged沒有被處理。

謝謝!

相關問題