Пример #1
0
        public void InitControl(OperationTypes operationType)
        {
            columnHeaderStyle = (Style)Application.Current.Resources["DataGridColumnHeaderStyle"];
            this.Style        = (Style)Application.Current.Resources["DataGridStyle"];
            this.RowStyle     = (Style)Application.Current.Resources["DataGridRowStyle"];
            //this.ColumnHeaderStyle =
            this.Columns.Clear();
            for (int i = 0; i < GridItems.Count; i++)
            {
                DataGridColumn dgtc        = GetDataGridColumn(GridItems[i]);
                string         toolTipText = GridItems[i].TipText;


                dgtc.Header = GridItems[i].PropertyDisplayName;
                dgtc.Width  = new DataGridLength(GridItems[i].Width);

                dgtc.SortMemberPath = GridItems[i].PropertyName;
                dgtc.CanUserSort    = true;

                // 可写背景色
                if (!GridItems[i].IsReadOnly && (operationType != OperationTypes.Browse && operationType != OperationTypes.Audit))
                {
                    dgtc.CellStyle = writtableStyle;

                    dgtc.IsReadOnly = false;
                }
                else
                {
                    dgtc.IsReadOnly = true;
                }
                this.Columns.Add(dgtc);

                var styleHeader = this.columnHeaderStyle;
                if (toolTipText != null)
                {
                    //<TextBlock Margin="3 2 0 2"  Foreground="{StaticResource HeaderBackgroundfontColor1}" x:Name="ContentFontColor">
                    //</TextBlock>

                    XElementString gridXCs = new XElementString("TextBlock",
                                                                new XAttributeString("Margin", "3 2 0 2"),
                                                                new XAttributeString("Foreground", "{StaticResource HeaderBackgroundfontColor1}"),
                                                                new XAttributeString("x:Name", "ContentFontColor"),
                                                                new XAttributeString("Text", "{Binding  Converter={StaticResource GridHeaderConverter}, RelativeSource={RelativeSource TemplatedParent}}"),
                                                                new XAttributeString("ToolTipService.ToolTip", toolTipText)
                                                                );

                    var dtHeadTextBlockTemplate = DataTemplateHelper.GetDataTemplate(gridXCs);

                    styleHeader = styleHeader.Copy();
                    styleHeader.SetStyle(DataGridColumnHeader.ContentTemplateProperty, dtHeadTextBlockTemplate);
                }
                dgtc.HeaderStyle = styleHeader;
            }
        }
Пример #2
0
        private DataGridColumn GetDataGridColumn(GridItem gItem)
        {
            Binding bding = new Binding();

            if (!string.IsNullOrEmpty(gItem.PropertyName))
            {
                bding.Mode = BindingMode.TwoWay;
                bding.Path = new PropertyPath(gItem.PropertyName);
                if (gItem.ReferenceDataInfo != null)
                {
                    IValueConverter converter = CommonFunction.GetIValueConverter(gItem.ReferenceDataInfo.Type);
                    bding.Converter = converter;
                }
                else if (gItem.PropertyName.Contains("MONEY"))
                {
                    IValueConverter converter = new CurrencyConverter();
                    bding.Converter = converter;
                }
                else
                {
                    IValueConverter converter = new CommonConvert(gItem);
                    bding.Converter = converter;
                }
            }
            else
            {
                System.Diagnostics.Debug.WriteLine("");
            }

            DataGridColumn dgc = null;

            switch (gItem.CType)
            {
            case ControlType.CheckBox:
                DataGridCheckBoxColumn dgcc = new DataGridCheckBoxColumn();
                dgcc.IsThreeState = false;
                dgcc.Binding      = bding;
                dgc = dgcc;
                break;

            case ControlType.Label:
                if (gItem.ReferenceDataInfo != null)
                {
                    DataGridReferenceColumn dgrc = new DataGridReferenceColumn();
                    dgrc.Binding           = bding;
                    dgrc.DisplayMemberPath = "Text";

                    dgc = dgrc;
                }
                else
                {
                    DataGridTextColumn dgtc = new MyDataGridTextColumn(gItem);
                    dgtc.Binding = bding;
                    dgc          = dgtc;
                }
                break;

            case ControlType.Combobox:

                DataGridComboBoxColumn dgcbc = new DataGridComboBoxColumn();
                if (gItem.ReferenceDataInfo != null)
                {
                    IList <ITextValueItem> list = DataCore.GetRefData(gItem.ReferenceDataInfo.Type);
                    dgcbc.ItemsSource = list;
                }
                dgcbc.DisplayMemberPath = "Text";
                dgcbc.Binding           = bding;

                dgc = dgcbc;
                break;

            case ControlType.TreeViewItem:
                DataGridIconColumn dgtvic = new DataGridIconColumn();
                dgtvic.Binding = bding;
                dgc            = dgtvic;
                break;

            case ControlType.Templete:

                //"<StackPanel Orientation="Horizontal"><smtx:ImageButton x:Name="myDelete" Click="Delete_Click"/></StackPanel>"
                var gridXCs = new XElementString("StackPanel", new XAttributeString("Orientation", "Horizontal"));

                DataGridTemplateColumn dtc = new DataGridTemplateColumn();
                dtc.CellTemplate = DataTemplateHelper.GetDataTemplate(gridXCs);
                dgc = dtc;
                break;
            }

            return(dgc);
        }