我正在使用WPF工具包的數據網格,並在過去一直創建的網格綁定到的實體,所以例如與名稱,地址等聯繫實體 在我正在工作的當前應用程序用戶可以從50個表中選擇並單獨選擇表中的字段以生成視圖。 顯然這裏有一個實體綁定將不會工作,因爲綁定源將是動態的。WPF DataGrid綁定
問題是我該怎麼做?
感謝
我正在使用WPF工具包的數據網格,並在過去一直創建的網格綁定到的實體,所以例如與名稱,地址等聯繫實體 在我正在工作的當前應用程序用戶可以從50個表中選擇並單獨選擇表中的字段以生成視圖。 顯然這裏有一個實體綁定將不會工作,因爲綁定源將是動態的。WPF DataGrid綁定
問題是我該怎麼做?
感謝
我只是blogged關於如何動態創建基於可重用模型的DataGrid的列。
你可以離開綁定源,因爲它是,但你可以根據他/她需要隱藏或看到什麼用戶的喜好過濾DataGrid的列。
最好的解決方案是使用Anonymous Types
它完美的作品,看到概念的以下證明:
<Window x:Class="MyProject.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:System="clr-namespace:System;assembly=mscorlib"
Title="MainWindow"
Height="136" Width="525"
Loaded="OnWindowLoaded">
<DataGrid ItemsSource="{Binding}">
</DataGrid>
using System.Collections.ObjectModel;
using System.Linq;
using System.Windows;
namespace MyProject {
public partial class MainWindow : Window
{
public class Employee
{
public int Id { get; set; }
public string Code { get; set; }
public string Name { get; set; }
public int Job { get; set; }
public string Address { get; set; }
}
private ObservableCollection<Employee> _empCollection;
public MainWindow()
{
InitializeComponent();
}
private void OnWindowLoaded(object sender, RoutedEventArgs e)
{
// Generate test data
_empCollection =
new ObservableCollection<Employee>
{
new Employee {Id = 234, Code = "E041", Name = "Employee1", Job = 1, Address = "..."},
new Employee {Id = 245, Code = "E701", Name = "Employee2", Job = 3, Address = "..."},
new Employee {Id = 728, Code = "E001", Name = "Employee3", Job = 9, Address = "..."},
new Employee {Id = 663, Code = "E051", Name = "Employee4", Job = 7, Address = "..."},
};
DataContext =
(from i in _empCollection
select new {i.Code, i.Name, i.Address}).ToList();
}
}
}
一種方法是創建對象的集合,併爲每個反對定製TypeDescriptor。
當電網是自動生成的列,它使用反射在你的類 - 例如,客戶,並發現它的性能 - 例如,名字,平衡等
但事實並非完全如此。 WPF本身並沒有完成這項工作 - 它需要一個TypeDescriptor。而且你可以實現自己的TypeDescriptor,所以你可以假裝具有實際不存在的屬性。或者在你的情況下,假裝不是具有確實存在的屬性。
+1爲偉大的偉大的聯繫。如果有選項,我會給+2) – 2011-04-03 07:51:48
我會使+2 :) – ChandlerPelhams 2012-10-22 14:20:20
感謝保羅的幫助。 – Andy 2011-04-16 19:11:18
保羅,您的博客中的代碼工作!我面臨的一個問題是,最後還有一列增加了一個標題爲「屬性」的列,所有列值都是「(集合)」,沒有引號。請讓我知道爲什麼這個專欄出現。謝謝... – Manoj 2012-12-25 13:17:01