Определение или передача информации об узле из события мыши в дереве WPF - PullRequest
0 голосов
/ 15 ноября 2010

У меня есть дерево WPF (привязано к данным XML).Ниже приведен отрывок:

(Хорошо, снимите, я не могу опубликовать фотографию, потому что моя репутация еще недостаточно высока. Если у моего представителя будет 10, я опубликую его.представьте себе обычный вид дерева с некоторыми значками «плюс» и «минус» на нескольких элементах на разных уровнях)

И поскольку мне нужны специальные операции на определенных уровнях, я вставил несколько значков на определенных уровнях дерева,Ну, на самом деле я ввел их на всех уровнях дерева, как и просто решил показать их на определенных уровнях с помощью триггеров.Это мой код XAML для этого:

<HierarchicalDataTemplate ItemsSource="{Binding Path=Elements}" x:Key="ViewEditTreeTemplate">
<StackPanel Orientation="Horizontal" Margin="1">
     <Label x:Name="ElementHeaderLabel" Height="16" Padding="1" VerticalContentAlignment="Center" FontSize="11" FontWeight="Normal">
          <MultiBinding Converter="{StaticResource ElementHeader}">
                <Binding Path="Name.LocalName"/>
                <Binding Path="Attribute[name].Value" />
          </MultiBinding>
     </Label>

     <Image x:Name="AddButton" Source="Images/button_add_icon.png"  Visibility="Collapsed" MouseLeftButtonUp="AddButton_MouseLeftButtonUp" />
     <Image x:Name="DeleteButton" Source="Images/button_delete_icon.png"  Visibility="Collapsed" MouseLeftButtonUp="DeleteButton_MouseLeftButtonUp" />
     <Image x:Name="EditButton" Source="Images/button_edit_icon.png"  Visibility="Collapsed" MouseLeftButtonUp="EditButton_MouseLeftButtonUp"/>
</StackPanel>

<HierarchicalDataTemplate.Triggers>


     <!-- Showing aditional buttons for RFFs list -->
     <DataTrigger Binding="{Binding Path=Name.LocalName}" Value="RFFs">
          <Setter TargetName="AddButton" Property="Visibility" Value="Visible"/>
          <Setter TargetName="DeleteButton" Property="Visibility" Value="Visible"/>
     </DataTrigger>

     <!-- Showing aditional buttons for RFF -->
     <DataTrigger Binding="{Binding Path=Name.LocalName}" Value="RFF">
          <Setter TargetName="EditButton" Property="Visibility" Value="Visible"/>
     </DataTrigger>

     <!-- Showing aditional buttons for Stations list -->
     <DataTrigger Binding="{Binding Path=Name.LocalName}" Value="Stations">
          <Setter TargetName="AddButton" Property="Visibility" Value="Visible"/>
          <Setter TargetName="DeleteButton" Property="Visibility" Value="Visible"/>

     </DataTrigger>

     <!-- Showing aditional buttons for AdjacentRegionNames list -->
     <DataTrigger Binding="{Binding Path=Name.LocalName}" Value="AdjacentRegionNames">
          <Setter TargetName="AddButton" Property="Visibility" Value="Visible"/>
          <Setter TargetName="DeleteButton" Property="Visibility" Value="Visible"/>

     </DataTrigger>
</HierarchicalDataTemplate.Triggers>

Моя проблема заключается в следующем.Я добавил обработчик событий к этим значкам (AddButton, DeleteButton и EditButton), но когда я попадаю в подпрограмму обработки событий, я не представляю, на каком узле находился пользователь, когда они нажимали на узел.Могу ли я передать что-нибудь этому обработчику события MouseLeftButtonUp (...) или я могу каким-то образом выяснить, где находился пользователь, когда он щелкнул мое изображение?

1 Ответ

0 голосов
/ 15 ноября 2010

TreeViewItem, по которому щелкнул пользователь, доступен через аргументы события:

private void TreeView_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            TreeViewItem ti = (TreeViewItem)e.Source;
            //do stuff here
        }

Если элемент на самом деле не является TreeViewItem, вы должны иметь возможность привести его к его типу для работы сэто.

...