Language: C#
Extensible Data Grid
namespace ExtensibleGrid.GridLibrary { public class ExtensibleDataGrid : DataGrid { private ConfigDialog dialog { get; set; } private IEnumerable<ExtensionItem> extensionItems; public override void OnApplyTemplate() { dialog = new ConfigDialog(); dialog.OKButton.Click += new RoutedEventHandler(OKButton_Click); dialog.CancelButton.Click += new RoutedEventHandler(CancelButton_Click); Button ConfigButton = GetTemplateChild("ConfigButton") as Button; if (ConfigButton != null) { ConfigButton.Click += new RoutedEventHandler(ConfigButton_Click); } base.OnApplyTemplate(); } void CancelButton_Click(object sender, RoutedEventArgs e) { dialog.Close(); } void OKButton_Click(object sender, RoutedEventArgs e) { foreach (var extensionItem in extensionItems) { if (extensionItem.Enabled == true && extensionItem.Activated == false) { var extension = extensionItem.GridExtension.Value; extension.Initialize(this); extensionItem.Activated = true; } } } void ConfigButton_Click(object sender, RoutedEventArgs e) { dialog.DataContext = extensionItems; dialog.Show(); } public ExtensibleDataGrid() { this.Loaded += new RoutedEventHandler(MefGrid_Loaded); DefaultStyleKey = typeof(ExtensibleDataGrid); } void MefGrid_Loaded(object sender, RoutedEventArgs e) { PartInitializer.SatisfyImports(this); extensionItems = Extensions.Select(ex => new ExtensionItem { GridExtension = ex }).ToArray(); } [ImportMany] public IEnumerable<Lazy<IGridExtension, IGridExtensionMetadata>> Extensions { get; set; } } }
Tags:
Report Abuse
Subscribe
Discuss
What's new
What is it
New Snippet
Recent Snippets
My Snippets
Web Code
Search

