//-------------添加選擇列
//--dgrid為DataGrid實例對象,Row_Checked是響應事件。
DataGridTemplateColumn dgtc = new DataGridTemplateColumn(); dgtc.Header = "選擇"; DataTemplate dt = new DataTemplate(); //定義子元素 FrameworkElementFactory fef = new FrameworkElementFactory(typeof(CheckBox)); binding = new Binding("Check"); fef.SetValue(CheckBox.IsCheckedProperty,binding); fef.SetValue(CheckBox.ForegroundProperty, Brushes.Red);
//關鍵部分,為每一項添加事件理解AddHandler的用法
fef.AddHandler(CheckBox.CheckedEvent,new RoutedEventHandler(Row_Checked));
dt.VisualTree = fef;//添加子元素
dgtc.CellTemplate = dt;
dgrid.Columns.Add(dgtc);//將第一列添加到數據表
上面一段代碼我琢磨了一天,我相信前台XAML能實現的東西,在后台一定可用生成,關鍵是理解內部結構。前台的一個屬性可能是直接寫在標簽里面就那么簡單,
后台可能就要實例對象,配置屬性,一層層添加對象,最后添加到主對象完成。