Пример #1
0
 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();
 }
Пример #2
0
        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];
            }
        }