2016-07-21 9 views
0

ように私は項目が(理解しやすくするための単なる一例)のリストですデータグリッドを、持っています。表示行の詳細は、DataGrid

私はこの

<DataGrid.RowDetailsTemplate> 
     <DataTemplate> 
      <DataGrid ItemsSource="{Binding Companies}"> 
       [im trying to access the data of the row here] 
      </DataGrid> 
     </DataTemplate> 
</DataGrid.RowDetailsTemplate> 

を行うことを試みているデータグリッドの私のItemsSourceはリストである(その読み取り専用、そのデータだけを編集し、いない表示する。)

私の問題は、Iであり、会社にアクセスすることはできませんが、むしろVS/R#はList<Person>(私のviewModelの中のPersonsという名前)が利用可能であるとしか言いません。

しかし、すべての行のすべてのデータではなく、行ごとのデータにアクセスしたいとします。それ、どうやったら出来るの?

+0

だから、選択した行の詳細(会社)にアクセスしたいですか? MVVMにいますか? – Gopichandar

+0

はい、はい。私はプリズムを使っています。むしろ、私はとにかくすべての詳細を表示するつもりですが、RowDetailsTemplateが提供する機能はどれですか? – Mafii

+0

_But私の行のデータにアクセスしたいのですが_ここで_my行を意味していますか? – Gopichandar

答えて

1

例を説明しましょう。次のコードを貼り付けて、getsetSelectedEmployeeにブレークポイントを貼り付けます。

コードを実行し、別の行をクリックします。あなたはその中に詳細のリストを持つ研究的な行項目を得るでしょう。

MainWindow.xaml

<DataGrid ItemsSource="{Binding Employees}" SelectedItem="{Binding SelectedEmployee}" > 
     <DataGrid.RowDetailsTemplate> 
      <DataTemplate> 
       <DataGrid ItemsSource="{Binding Details}"/> 
      </DataTemplate> 
     </DataGrid.RowDetailsTemplate> 
    </DataGrid> 

MainWindow.xaml.cs

/// <summary> 
/// Interaction logic for MainWindow.xaml 
/// </summary> 
public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 

     var detail1 = new EmployeeDetails() { ManagerID = 11, ManagerName = "11 Name", ManagerMobile = "123456" }; 
     var detail2 = new EmployeeDetails() { ManagerID = 12, ManagerName = "12 Name", ManagerMobile = "123456" }; 
     var detail3 = new EmployeeDetails() { ManagerID = 13, ManagerName = "13 Name", ManagerMobile = "123456" }; 

     var detail4 = new EmployeeDetails() { ManagerID = 11, ManagerName = "11 Name", ManagerMobile = "123456" }; 
     var detail5 = new EmployeeDetails() { ManagerID = 12, ManagerName = "12 Name", ManagerMobile = "123456" }; 
     var detail6 = new EmployeeDetails() { ManagerID = 13, ManagerName = "13 Name", ManagerMobile = "123456" }; 

     var detail7 = new EmployeeDetails() { ManagerID = 11, ManagerName = "11 Name", ManagerMobile = "123456" }; 
     var detail8 = new EmployeeDetails() { ManagerID = 12, ManagerName = "12 Name", ManagerMobile = "123456" }; 
     var detail9 = new EmployeeDetails() { ManagerID = 13, ManagerName = "13 Name", ManagerMobile = "123456" }; 

     var details1 = new List<EmployeeDetails>(); 
     details1.Add(detail1); 
     details1.Add(detail2); 
     details1.Add(detail3); 

     var details2 = new List<EmployeeDetails>() { detail4, detail5, detail6 }; 
     var details3 = new List<EmployeeDetails>() { detail7, detail8, detail9 }; 

     Employees = new List<Employee>(); 
     Employees.Add(new Employee() { ID = 1, Name = "Name1", Details = details1 }); 
     Employees.Add(new Employee() { ID = 2, Name = "Name2", Details = details2 }); 
     Employees.Add(new Employee() { ID = 3, Name = "Name3", Details = details3 });    

     SelectedEmployee = Employees[1]; 

     this.DataContext = this; 
    } 

    public List<Employee> Employees { get; set; } 

    private Employee _selected; 

    public Employee SelectedEmployee 
    { 
     get { return _selected; } 
     set { _selected = value; } 
    } 


} 

public class Employee 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public List<EmployeeDetails> Details { get; set; } 
} 

public class EmployeeDetails 
{ 
    public int ManagerID { get; set; } 
    public string ManagerName { get; set; } 
    public string ManagerMobile { get; set; } 

} 
+0

ありがとうございました。ときどき、あなたがダムだと指摘する人が必要な場合もあります。しかし、私がまだ正しいアプローチをしていなければ、私の問題を解決できたでしょう。いい答えだ! – Mafii

関連する問題