public WindowViewModel() { PNDDEF_ViewModel = new PNDATR_ViewModel(FileType.PND); ATRDEF_ViewModel = new PNDATR_ViewModel(FileType.ATR); PCKLST_ViewModel = new PCKPRK_ViewModel(FileType.PCK); PRKLST_ViewModel = new PCKPRK_ViewModel(FileType.PRK); BMPAGV_ViewModel = new BMPCLS_ViewModel(FileType.BMP); CLSAGV_ViewModel = new BMPCLS_ViewModel(FileType.CLS); OPCMgr_ViewModel = new OPCMgr_ViewModel(); }
private void LoadViewModel(PNDATR_ViewModel pndatrViewModel) { DataGrid grid = pndatrViewModel.fileType == FileType.PND ? pnddefGrid : atrdefGrid; for (int i = 0; i < pndatrViewModel.Headers.Count; i++) { if (string.Equals(pndatrViewModel.Types[i], "bool", StringComparison.OrdinalIgnoreCase)) { Binding colBinding = new Binding($"[{i}]"); colBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; DataGridCheckBoxColumn col = new DataGridCheckBoxColumn(); col.Binding = colBinding; col.CellStyle = (Style)FindResource("DataGridCellStyle"); grid.Columns.Add(col); } else if (string.Equals(pndatrViewModel.Types[i], "combo", StringComparison.OrdinalIgnoreCase)) { Binding colBinding = new Binding($"[{i}]"); colBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; DataGridComboBoxColumn col = new DataGridComboBoxColumn(); col.SelectedItemBinding = colBinding; col.ItemsSource = pndatrViewModel.ComboValues[i]; col.CellStyle = (Style)FindResource("DataGridCellStyle"); grid.Columns.Add(col); } else if (string.Equals(pndatrViewModel.Types[i], "OPC Item", StringComparison.OrdinalIgnoreCase)) { Binding colBinding = new Binding($"[{i}]"); colBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; DataGridComboBoxColumn col = new DataGridComboBoxColumn(); col.SelectedItemBinding = colBinding; Binding itemsSourceBinding = new Binding("DataContext.OPCMgr_ViewModel.ItemIDs"); itemsSourceBinding.RelativeSource = new RelativeSource(RelativeSourceMode.FindAncestor, typeof(Window), 1); Setter itemsSourceSetter = new Setter(ComboBox.ItemsSourceProperty, itemsSourceBinding); Style editingElementStyle = new Style(typeof(ComboBox)); Style elementStyle = new Style(typeof(ComboBox)); editingElementStyle.Setters.Add(itemsSourceSetter); elementStyle.Setters.Add(itemsSourceSetter); col.EditingElementStyle = editingElementStyle; col.ElementStyle = elementStyle; col.CellStyle = (Style)FindResource("DataGridCellStyle"); grid.Columns.Add(col); } else // Text { Binding colBinding = new Binding($"[{i}]"); colBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; DataGridTextColumn col = new DataGridTextColumn(); col.Binding = colBinding; grid.Columns.Add(col); } Binding b = new Binding($"DataContext.Descriptions[{i}]"); b.RelativeSource = new RelativeSource(RelativeSourceMode.FindAncestor, typeof(DataGrid), 1); Style headerStyle = new Style(typeof(DataGridColumnHeader)); Setter headerSetter = new Setter(ToolTipProperty, b); headerStyle.Setters.Add(headerSetter); // Code to add tooltip to each cell, along with the mouseover trigger //Style cellStyle = new Style(typeof(DataGridCell)); //Setter cellToolTipSetter = new Setter(ToolTipProperty, b); //Setter cellIsEditingSetter = new Setter(DataGridCell.IsEditingProperty, true); //Trigger cellMouseOverTrigger = new Trigger(); //cellMouseOverTrigger.Property = IsMouseOverProperty; //cellMouseOverTrigger.Value = true; //cellMouseOverTrigger.Setters.Add(cellIsEditingSetter); //cellStyle.Setters.Add(cellToolTipSetter); //cellStyle.Triggers.Add(cellMouseOverTrigger); grid.Columns[i].HeaderStyle = headerStyle; //grid.Columns[i].CellStyle = cellStyle; grid.Columns[i].Header = pndatrViewModel.Headers[i]; } }