2011-10-21 72 views
0

我不知道如何开始这样做。获取网格中显示方法的结果

我有一个网格,我已经填充了一些数据并以表格格式显示。我可以点击每个单独的单元格,它将指示哪个单元格及其值。

但是我需要这些值和我点击的单元格显示在网格的另一部分。我如何去做这件事?不知道如何做绑定,虽然我的点击会触发一个事件,我不知道我怎么能实际上将数据从事件代码推送到网格。

在此先感谢!

+0

你的意思是 '选择' 来选择单个细胞?或行?不像MS Excel,WPF DataGrid基本上不支持选择每个单独的单元格,而是行。以下我的答案是关于选择行。 –

回答

0

您可以使用DataGrid的SelectedItems绑定来解决您的问题。只需检查下面的代码。

[更新]乍一看,作为SelectedItems类型是IList的,似乎没有实现INotifyCollectionChanged,但SelectedItems的实际对象类型为internal class SelectedItemCollection : ObservableCollection<object>[/更新]

XAML

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition /> 
     <RowDefinition /> 
    </Grid.RowDefinitions> 
    <DataGrid Name="DS1" ItemsSource="{Binding}" AutoGenerateColumns="False"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="First Name" Binding="{Binding FirstName}" /> 
      <DataGridTextColumn Header="Last Name" Binding="{Binding LastName}" /> 
     </DataGrid.Columns> 
    </DataGrid> 
    <DataGrid Grid.Row="1" 
       ItemsSource="{Binding ElementName=DS1, Path=SelectedItems}" AutoGenerateColumns="False"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="First Name" Binding="{Binding FirstName}" /> 
      <DataGridTextColumn Header="Last Name" Binding="{Binding LastName}" /> 
     </DataGrid.Columns> 
    </DataGrid> 
</Grid> 

代码隐藏

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
     List<Customer> customers = new List<Customer>(); 
     for (int i = 0; i < 10; i++) 
     { 
      customers.Add(new Customer {FirstName = "name" + i, LastName = "last" + i}); 
     } 
     DataContext = customers; 
    } 
} 

//Defines the customer object 
public class Customer 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 
+0

不错,这是一个简短的解决方案。我以前看过这个例子,但从未想过它。谢谢! – edelweiss

相关问题