【问题标题】:DataGrid UWP/WinUI SelectAll function?DataGrid UWP/WinUI 全选功能?
【发布时间】:2022-11-05 06:20:31
【问题描述】:

如何为 uwp/winui 选择 datagrid 中的所有行? 类似于 dataGrid.SelectAl();来自 WPF。

我在 uwp/winUI 中没有找到任何关于此的内容

【问题讨论】:

  • UWP 或 WinUI 中目前没有 datagrid 控件。您是在谈论来自社区工具包或某些第三方库的数据网格控件吗?
  • 来自社区工具包

标签: c# uwp datagrid winui-3 windows-community-toolkit


【解决方案1】:

您可以通过按控制钥匙和一个钥匙。

主窗口.xaml

<StackPanel>
    <Button
        Click="SelectAllButton_Click"
        Content="SelectAll" />
    <controls:DataGrid
        x:Name="DataGridControl"
        ItemsSource="{x:Bind Items, Mode=OneWay}"
        SelectionMode="Extended" />
</StackPanel>

主窗口.xaml.cs

public sealed partial class MainWindow : Window
{
    public MainWindow()
    {
        this.InitializeComponent();

        Items.Add(new Item() { Id = 0, Title = "A" });
        Items.Add(new Item() { Id = 1, Title = "B" });
        Items.Add(new Item() { Id = 2, Title = "C" });
    }

    public ObservableCollection<Item> Items { get; set; } = new();

    private void SelectAllButton_Click(object sender, RoutedEventArgs e)
    {
        this.DataGridControl.Focus(FocusState.Programmatic);

        var keys = new[]
        {
            new InjectedInputKeyboardInfo()
            {
                VirtualKey = (ushort)(VirtualKey.Control),
                KeyOptions = InjectedInputKeyOptions.None,
            },
            new InjectedInputKeyboardInfo()
            {
                VirtualKey = (ushort)(VirtualKey.A),
                KeyOptions = InjectedInputKeyOptions.None,
            },
        };

        InputInjector inputInjector = InputInjector.TryCreate();

        // Press the keys.
        inputInjector.InjectKeyboardInput(keys);

        foreach (InjectedInputKeyboardInfo key in keys)
        {
            key.KeyOptions = InjectedInputKeyOptions.KeyUp;
        }

        // Release the keys.
        inputInjector.InjectKeyboardInput(keys);
    }
}

【讨论】:

    【解决方案2】:

    Print

    在 inputInjector.InjectKeyboardInput(keys) 中返回错误;

    System.ArgumentException:“值不在预期范围内。”

    【讨论】:

      【解决方案3】:

      问题出现在数组中,由于某种原因,它不起作用,我通过单独发送密钥来解决它

      谢谢,@Adrew!

      this.dataGrid.Focus(FocusState.Programmatic);
      
              var inputInjector = InputInjector.TryCreate();
              // Press the keys.
              inputInjector.InjectKeyboardInput(new[] { new InjectedInputKeyboardInfo
              {
                  VirtualKey = (ushort)VirtualKey.Control,
                  KeyOptions = InjectedInputKeyOptions.None
              }});
      
              inputInjector.InjectKeyboardInput(new[] { new InjectedInputKeyboardInfo
              {
                  VirtualKey = (ushort)VirtualKey.A,
                  KeyOptions = InjectedInputKeyOptions.None
              }});
      
              // Release the keys.
              inputInjector.InjectKeyboardInput(new[] { new InjectedInputKeyboardInfo
              {
                  VirtualKey = (ushort)VirtualKey.Control,
                  KeyOptions = InjectedInputKeyOptions.KeyUp
              }});
      
              inputInjector.InjectKeyboardInput(new[] { new InjectedInputKeyboardInfo
              {
                  VirtualKey = (ushort)VirtualKey.A,
                  KeyOptions = InjectedInputKeyOptions.KeyUp
              }});
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-08-10
        • 2021-12-08
        • 1970-01-01
        • 2022-10-01
        • 2022-01-04
        • 1970-01-01
        • 1970-01-01
        • 2021-10-19
        相关资源
        最近更新 更多