2011-10-21 8 views
0

これを行う方法はわかりません。グリッドに表示するメソッドの結果を取得する

私は既にいくつかのデータを入力し、テーブル形式で提示したグリッドを持っています。個々のセルをクリックすると、どのセルとその値が表示されますか?

グリッドの別のセクションに表示するには、これらの値とクリックする必要があります。これをどうやって行うのですか?私のクリックはイベントをトリガーするので、バインディングを行う方法はわかりません。イベントコードからデータをグリッドに実際にどのようにプッシュできるのかよくわかりません。

ありがとうございます!

+0

あなたは、個々のセルを選択するために '選択' を意味しますか?または行? MS Excelとは異なり、WPF DataGridは基本的に個々のセル、行を選択することをサポートしていません。私の答えは行を選択することです。 –

答えて

0

DataGridのバインディングSelectedItemsを使用すると、問題を解決できます。次のコードをチェックしてください。

[更新]一見、selectedItemsのタイプはILi​​stのように、それは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

関連する問題