Avalonia Treeview 选定命令

问题描述 投票:0回答:1

当我在树视图上选择一个节点时,我试图触发一个事件。我正在使用按钮来捕获命令。我已经获得了一些 ChatGPT 帮助但无济于事:-(

       <TreeView.ItemTemplate>
       <TreeDataTemplate ItemsSource="{Binding Item}">
           <StackPanel Orientation="Horizontal" Spacing="10">
               <TextBlock Text="{Binding LinkId}" ToolTip.Tip="Click Me" />
               <TextBlock Text="{Binding Type}" />
               <TextBlock Text="{Binding Text}" />
               <Button Command="{Binding DataContext.NodePressedCommand, 
                     RelativeSource={RelativeSource AncestorType=Window}}">^</Button>
           </StackPanel>
       </TreeDataTemplate>
   </TreeView.ItemTemplate>

我正在使用社区 MVVM 我的命令如下:

 [RelayCommand]
public void NodePressed()
{
    // Set breakpoint here
    Debug.WriteLine("Clicked");
}

我收到此消息:无法解析类型“System.Object”上名称为“NodePressedCommand”的属性或方法

如果我像

<Button Command="{Binding NodePressedCommand}">^</Button>
这样我得到:无法解析类型“AvaloniaTreeview.Models.Node”上名称“NodePressedCommand”的属性或方法

那么如何访问 AvaloniaTreeview.ViewModels.MainWindowViewMode.NodePressedCommand?

我对 Avalonia 有点陌生,TIA

c# xaml avaloniaui community-toolkit-mvvm
1个回答
0
投票

这是我的解决方法,我添加了一个按钮并使用了反射绑定:

  <TreeView    
    x:Name="myTreeView"   
    Grid.Column="0"    
    ItemsSource="{Binding Nodes}">   
    <TreeView.ItemTemplate>    
    <TreeDataTemplate ItemsSource="{Binding Item}">    
    <StackPanel Orientation="Horizontal" Spacing="10">
        <TextBlock Text="{Binding LinkId}" ToolTip.Tip="Click Me" />   
        <TextBlock Text="{Binding Type}" />   
       <TextBlock Text="{Binding Text}" />    
    <!-- [https://github.com/AvaloniaUI/Avalonia/discussions/12719] 
    (https://github.com/AvaloniaUI/Avalonia/discussions/12719) -->    
    <Button Command="{ReflectionBinding 
             #myTreeView.DataContext.NodePressedCommand}"
    CommandParameter="{Binding LinkId}">^</Button>
    </StackPanel>
    </TreeDataTemplate>
    </TreeView.ItemTemplate>
    </TreeView>
© www.soinside.com 2019 - 2024. All rights reserved.