【问题标题】:WPF DataGrid: How do I change the selected row programatically?WPF DataGrid:如何以编程方式更改选定的行?
【发布时间】:2011-03-04 03:41:11
【问题描述】:

如何以编程方式更改选定的行?

我更改了所选项目和单元格,但我不知道如何突出显示整行。

注意:当用户使用鼠标或键盘选择一行时,突出显示效果很好。

【问题讨论】:

  • 这个解决方案有效吗? stackoverflow.com/questions/1976087/…
  • 不。我想知道它是否与样式表有关。
  • 更具体地说,您发送的链接会更改所选单元格,但不会更改突出显示的行。

标签: wpf wpfdatagrid


【解决方案1】:

看看this 页面。您需要 SelectionUnitSelectionMode 来指定如何在 DataGrid 中完成选择。

使用SelectionUnit = FullRowSelectionMode = Single,用户一次只能选择一行。

编辑:在尝试之后,看起来DataGrid.SelectedItem[i] 会选择一整行。不幸的是,您似乎必须在必须为 DataGrid 的 SelectionChanged 属性创建的事件处理程序中手动设置突出显示。

【讨论】:

  • 我已经有了这些设置,当用户使用鼠标或键盘选择一行时,突出显示效果很好。我需要知道如何使用代码更改选择。
【解决方案2】:

似乎 SelectedItem 仅在包含元素(例如 UserControl)的 Loaded 事件之后才被拾取。这似乎有效:

 public partial class UserControlClass
{
    public UserControlClass()
    {
        InitializeComponent();

        Loaded += UserControlClass_Loaded;
    }

    void UserControlClass_Loaded(object sender, System.Windows.RoutedEventArgs e)
    {
        if (YourItemsControl.Items.Count > 0)
            YourItemsControl.SelectedItem = YourItemsControl.Items[0];
    }
}

如果 YourItemsControl 绑定到包含任何项目的集合,上面的代码将显示第一个被选中的项目。

【讨论】:

    猜你喜欢
    • 2018-12-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 2012-10-23
    • 2019-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多