当我在树视图上选择一个节点时,我试图触发一个事件。我正在使用按钮来捕获命令。我已经获得了一些 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
这是我的解决方法,我添加了一个按钮并使用了反射绑定:
<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>