XAML WinUI 3 TreeView -如何在右键单击时添加选择

l3zydbqr  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(163)

我试图在用户右击节点时在WinUI 3 TreeView上显示MenuFlyout,并允许用户选择应用于该节点的操作。单个节点选择有效,并且在右击时不会自动选择该节点。
经过搜索,我找到了这个答案,但它不适用于WinUI 3,因为WinUI 3 TreeView control没有GetNodeAt方法,我不知道如何从一个点获得TreeViewNode。
有什么建议吗?谢谢。

n1bvdmb6

n1bvdmb61#

您可以这样做:

主窗口.xaml

<Grid>
    <Grid.Resources>
        <CommandBarFlyout
            x:Name="TestCommanBarFlyout"
            Placement="Right">
            <AppBarButton Icon="Copy" />
            <AppBarButton Icon="Delete" />
        </CommandBarFlyout>
    </Grid.Resources>
    <TreeView ItemsSource="{x:Bind Items}">
        <TreeView.ItemTemplate>
            <DataTemplate x:DataType="x:String">
                <TreeViewItem
                    Content="{x:Bind}"
                    ContextRequested="TreeViewItem_ContextRequested" />
            </DataTemplate>
        </TreeView.ItemTemplate>
    </TreeView>
</Grid>

主窗口.xaml.cs

public ObservableCollection<string> Items { get; } = new() { "A", "B", "C" };

private void TreeViewItem_ContextRequested(UIElement sender, ContextRequestedEventArgs args)
{
    if (sender is TreeViewItem item)
    {
        item.IsSelected = true;
        TestCommanBarFlyout.ShowAt(
            item,
            new FlyoutShowOptions()
            {
                ShowMode = FlyoutShowMode.Standard
            });
    }
}

相关问题