2015-09-11 43 views
1

在我的应用程序中,我想选择dataGrid1中的“Order”列中实际存储在textBox中的值。 我怎样才能选择行programmaticaly(不会有两个数字相同的行)?WPF DataGrid从文本框中选择具有值的行

+0

更新你的答案,包括你的代码,到目前为止,你已经尝试了什么 –

回答

0

为您的DataGrid命名,以便后面的代码中的代码可以访问它。在文本框中订阅KeyUpLostFocus事件并查找与文本框中放置的内容相匹配的对象。

示例列表包含一个订单有独特的OrderId

enter image description here

的XAML

<DataGrid AutoGenerateColumns="True" 
      Name="myGrid" 
      ItemsSource="{Binding Orders}"/> 

<TextBox x:Name="tbSelection" 
     KeyUp="tbSelection_LostFocus"/> 

代码隐藏

private void tbSelection_LostFocus(object sender, RoutedEventArgs e) 
{ 

    if (string.IsNullOrWhiteSpace(tbSelection.Text) == false) 
    { 
     int userOrderId; 

     if (int.TryParse(tbSelection.Text, out userOrderId)) 
     { 
      var orders = myGrid.ItemsSource as List<Order>; 

      var order = orders.FirstOrDefault(ord => ord.OrderId == userOrderId); 

      if (order != null) 
       myGrid.SelectedItem = order; 
      else 
       myGrid.SelectedIndex = -1; // Default to nothing. 

     } 
     else 
      myGrid.SelectedIndex = -1; // Default to nothing. 
    } 

} 

结果

enter image description here