예제 #1
0
        private int GetItemViewTypeFromTemplate(object item)
        {
            var itemTemplate = DataTemplateHelper.ResolveTemplate(
                this.ItemTemplate,
                this.ItemTemplateSelector,
                item
                );

            if (itemTemplate == null)
            {
                return(0);
            }

            if (!_usedTemplates.Contains(itemTemplate))
            {
                _usedTemplates.Add(itemTemplate);
            }

            var toReturn = _usedTemplates.IndexOf(itemTemplate)
                           //Add 1 because 0 represents null (no template)
                           + 1
                           + (HasHeader() ? 1 : 0)
                           + (HasFooter() ? 1 : 0);

            return(toReturn);
        }
예제 #2
0
        private View GetSimpleView(View convertView, object source, ViewGroup parent)
        {
            if (ItemTemplate != null || ItemTemplateSelector != null)
            {
                if (convertView == null)
                {
                    if (ItemContainerTemplate != null)
                    {
                        var container = ItemContainerTemplate() as SelectorItem;

                        if (container != null)
                        {
                            container.Style = ItemContainerStyle;
                            container.ContentTemplateSelector = ItemTemplateSelector;
                            container.ContentTemplate         = ItemTemplate;
                            container.Binding("Content", "");
                        }
                        else
                        {
                            throw new InvalidOperationException("The ItemContainerTemplate must be a SelectorItem");
                        }

                        _allocatedViews.Add(container);
                        return(container);
                    }
                    else
                    {
                        var template = DataTemplateHelper.ResolveTemplate(
                            this.ItemTemplate,
                            this.ItemTemplateSelector,
                            source,
                            null
                            );

                        var templateView = template?.LoadContentCached();

                        _allocatedViews.Add(templateView);
                        return(templateView);
                    }
                }
                else
                {
                    return(convertView);
                }
            }
            else
            {
                var container = ItemContainerTemplate?.Invoke() ?? new SelectorItem()
                {
                    ShouldHandlePressed = false
                };

                container.Style           = ItemContainerStyle;
                container.ContentTemplate = GetDataTemplateFromItem(source);
                container.Binding("Content", "");

                return(container);
            }
        }
예제 #3
0
 private DataTemplate GetDataTemplateFromItem(object item)
 {
     return(DataTemplateHelper.ResolveTemplate(
                ItemTemplate,
                ItemTemplateSelector,
                item
                ));
 }
예제 #4
0
 internal static DataTemplate ResolveItemTemplate(this IItemsControl itemsControl, object item)
 {
     return(DataTemplateHelper.ResolveTemplate(
                itemsControl.ItemTemplate,
                itemsControl.ItemTemplateSelector,
                item
                ));
 }
 public static DataTemplate ResolveContentTemplate(this ContentPresenter contentPresenter)
 {
     return(DataTemplateHelper.ResolveTemplate(
                contentPresenter?.ContentTemplate,
                contentPresenter?.ContentTemplateSelector,
                contentPresenter?.Content
                ));
 }
 public static DataTemplate ResolveContentTemplate(this ContentControl contentControl)
 {
     return(DataTemplateHelper.ResolveTemplate(
                contentControl?.ContentTemplate,
                contentControl?.ContentTemplateSelector,
                contentControl?.Content
                ));
 }
예제 #7
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;
            }
        }
예제 #8
0
        private DataTemplate GetTemplateForGroupHeader(int section)
        {
            var groupStyle = Owner.GroupStyle;

            if (IsMaterialized(section))
            {
                return(DataTemplateHelper.ResolveTemplate(groupStyle?.HeaderTemplate, groupStyle?.HeaderTemplateSelector, Owner.XamlParent.GetGroupAtDisplaySection(section).Group));
            }
            else
            {
                return(groupStyle?.HeaderTemplate);
            }
        }
        public override System.Windows.DataTemplate SelectTemplate(object item, System.Windows.DependencyObject container)
        {
            if (item.GetType() == typeof(StickerViewModel))
            {
                return(DataTemplateHelper.GetTemplate <StickerControl>());
            }

            if (item.GetType() == typeof(StickerBoardViewModel))
            {
                return(DataTemplateHelper.GetTemplate <NameEditControl>());
            }

            return(null);
        }
 private static DataTemplate GetDataTemplateFromItem(ListViewBase parent, object item, int?itemViewType)
 {
     if (itemViewType == GroupHeaderItemType)
     {
         return(parent.GetGroupStyle()?.HeaderTemplate);
     }
     if (itemViewType == HeaderItemType)
     {
         return(parent.HeaderTemplate);
     }
     if (itemViewType == FooterItemType)
     {
         return(parent.FooterTemplate);
     }
     return(DataTemplateHelper.ResolveTemplate(
                parent?.ItemTemplate,
                parent?.ItemTemplateSelector,
                item
                ));
 }
예제 #11
0
파일: DataGenerator.cs 프로젝트: ktj007/mmo
        private void WriteTemplateToCode(DataTemplate dataTemplate, SourceCode code)
        {
            var templateCanonicalName = _define.GetCanonicalName(dataTemplate);

            // root만 IData를 상속 받는다.
            code.Append(dataTemplate.Parent.IsRoot ? "public class {0} : IData" : "public class {0}",
                        templateCanonicalName);

            code.BracketStart();

            foreach (var child in dataTemplate.Children)
            {
                WriteTemplateToCode(child, code);
            }

            foreach (var attribute in dataTemplate.Attributes)
            {
                var valueType = DataTemplateHelper.InferenceType(attribute.Value);
                if (valueType == "enum")
                {
                    var enumName = attribute.Key + (attribute.Key.EndsWith("s") || attribute.Key.EndsWith("x") ? "es" : "s");
                    if (attribute.Key.Equals("id", StringComparison.OrdinalIgnoreCase))
                    {
                        code.Append("public int {0} {{ get; set; }}", attribute.Key);
                    }
                    else
                    {
                        code.Append("public {0} {1} {{ get; set; }}", enumName, attribute.Key);
                    }

                    code.Append("public enum {0}", enumName);
                    code.BracketStart();
                    foreach (var value in attribute.Value.Distinct())
                    {
                        code.Append("{0},", value.Substring(1).ToCamelCase());  // remove leading _ character.
                    }
                    code.BracketEnd();
                }
                else
                {
                    code.Append("public {0} {1} {{ get; set; }}", valueType, attribute.Key);
                }
            }

            foreach (var attributeName in from e in dataTemplate.Attributes where e.Key.EndsWith("Ref") select e.Key)
            {
                // Ref를 제거하고 남은 이름
                var typeName = attributeName.Substring(0, attributeName.Length - 3);
                code.Append("public {0} {0} {{ get {{ return DataCenter.Instance[typeof ({0}), {1}] as {0}; }} }}",
                            typeName, attributeName);
            }

            foreach (var child in dataTemplate.Children)
            {
                code.Append("public List<{0}> {0}s {{ get; private set; }}", _define.GetCanonicalName(child));
            }

            if (dataTemplate.Children.Count > 0)
            {
                code.NewLine();
                code.Append("public {0}()", templateCanonicalName);
                code.BracketStart();
                foreach (var child in dataTemplate.Children)
                {
                    code.Append("{0}s = new List<{0}>();", _define.GetCanonicalName(child));
                }
                code.BracketEnd();
            }

            code.BracketEnd();
            code.NewLine();
        }
예제 #12
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);
        }
예제 #13
0
        private void SetRowDetailTemplate()
        {
            if (this.orderDetailGridInfo.RowDetailDataPanel != null)
            {
                #region RowDetailTemplate
                DataTemplate dt = DataTemplateHelper.GetEmptyGrid();

                this.ADGrid.RowDetailsTemplate = dt;
                this.ADGrid.LoadingRowDetails += (o, e) =>
                {

                    IDataPanel panel = this.orderDetailGridInfo.RowDetailDataPanel;
                    IControlAction control = panel.GetUIElement();
                    Grid grid = e.DetailsElement as Grid;
                    grid.Background = e.Row.Background;

                    if (grid.Children.Count == 0)
                    {                   
                        Border border = new Border();
                        border.Style = (Style)Application.Current.Resources["DetailShow_1"];

                        grid.Children.Add(border);
                        if (control.GetType() == typeof(DetailGrid))
                        {
                            DetailGrid dgrid = control as DetailGrid;
                            border.Child = dgrid;
               
                            // dgrid.Margin = new Thickness(80, 0, 0, 0);
                            control.InitControl(this.operationType);
                        }
                        else
                        {
                            border.Child = (control as UIElement);
                            OperationTypes cOpType = this.operationType;
                            if (this.operationType == OperationTypes.Audit)
                            {
                                cOpType = OperationTypes.Edit;
                            }
                            control.InitControl(cOpType);
                        }
                    }
                    DependencyObject dObj = VisualTreeHelper.GetChild(e.DetailsElement,0);
                    UIElement curControl = (dObj as Border).Child;
                    if (curControl.GetType() == typeof(DetailGrid))
                    {
                        DetailGrid dgrid = curControl as DetailGrid;
                        string entityType = dgrid.OrderDetailGridInfo.OrderDetailEntityInfo.Entity.Type;
                        FBEntity source = e.Row.DataContext as FBEntity; ;
                        if (source != null)
                        {
                            ObservableCollection<FBEntity> list = source.GetRelationFBEntities(entityType);
                            if (list.Count > 0)
                            {
                                dgrid.ItemsSource = list;
                                
                            }
                            else
                            {
                                
                                dgrid.Visibility = Visibility.Collapsed;
                            }
                        }
                    }

                    if (LoadRowDetailComplete != null)
                    {
                        ActionCompletedEventArgs<UIElement> args = new ActionCompletedEventArgs<UIElement>(curControl);
                        LoadRowDetailComplete(o, args);
                    }
                };
                #endregion
            }
            
        }
예제 #14
0
 /// <summary>
 /// Sets a usercontrol as DataTemplate for the list of files
 /// </summary>
 /// <param name="type"></param>
 public void SetRowTemplate(Type type)
 {
     FileList.ItemTemplate = DataTemplateHelper.CreateDataTemplate(type);
 }