【问题标题】:Double click on the whole row in gridview双击gridview中的整行
【发布时间】:2017-09-22 23:50:02
【问题描述】:

我想单击网格视图中的整行,它会显示一个对话框。此对话框包含我的网格本身的值。这是我的示例 xaml 代码..

<telerik:GridViewDataColumn Header="First Name" Width="*" DataMemberBinding="{Binding FirstName}" />
                <telerik:GridViewDataColumn Header="Last Name" Width="*" DataMemberBinding="{Binding LastName}" />
                <telerik:GridViewDataColumn Header="Middle Name" Width="*" DataMemberBinding="{Binding MiddleName}"  />
                <telerik:GridViewDataColumn Header="Registration Day" Width="*" DataMemberBinding="{Binding RegistrationDay, StringFormat={}{0:dd/MM/yyyy}}" />
                <telerik:GridViewDynamicHyperlinkColumn Header="Email" Width="*" DataMemberBinding="{Binding Email}" />
                <telerik:GridViewDataColumn Header="Password" Width="*" DataMemberBinding="{Binding Access}" />

这些值也是我的对话框中的值。我只想双击该行,而不是单击我实现的编辑按钮..希望你能帮助我..

【问题讨论】:

    标签: wpf datagridview double-click


    【解决方案1】:

    两种方式:

    1. 设置 gridview 的 IsReadOnly = true 并设置 gridview 的 MouseDoubleClick 事件:

      private void dg1_MouseDoubleClick(object sender, MouseButtonEventArgs e)
      {
          Student s = dg1.SelectedItem as Student;
          if (s != null)
          {
              MessageBox.Show(s.Name + " " +  s.Age);
          }
      }
      
    2. 设置gridview的PreviewMouseDoubleClick事件:

      private void dg1_PreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
      {
          Student s = dg1.SelectedItem as Student;
          if (s != null)
          {
              MessageBox.Show(s.Name + " " + s.Age);
          }
      
          e.Handled = true;
      }
      

    【讨论】:

    • 这是正确的吗?然后在我后面的代码上应该是这样的.. private void grdProducts_MouseDoubleClick(object sender, MouseButtonEventArgs e) { } tat mousedouble click 应该查看我的对话框。就像在我的编辑按钮代码中一样......这里: Product product = (sender as RadButton).DataContext as Product;显示产品窗口(产品);对不起,我逻辑不太好..
    • 例如,我已经在每个数据列标题上都有数据,当我保存时,所有这些数据都会在 1 行中吗?然后我将双击网格上的该行并将网格上的所有数据显示到对话框窗口。 :)
    • 是的。这就是我的意思..但它不起作用:(这是我的代码..如果我错了请纠正我..'private void grdProducts_MouseDoubleClick(object sender, MouseButtonEventArgs e) { Product p = grdProducts.SelectedItem as Product; }' 和XAML:''
    • 我在我的方法 mouseclick 上放了一个断点,但是,当我单击网格上的行时,它不显示我的对话框窗口。这是我在你提供的代码之后所做的。显示产品窗口(产品);参数product触发错误。
    • 是的,grdProducts 是网格中的产品列表。断点转到 ShowProductWindow(product) 但仍然没有显示窗口。if{p != null} 这就是你的意思吗?
    【解决方案2】:

    如果您使用 MVVM,您可能更愿意附加一个 ICommand,它将作为参数传递给已单击的行的 DataContext。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 2018-02-01
      • 2014-05-08
      相关资源
      最近更新 更多