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); }
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); } }
private DataTemplate GetDataTemplateFromItem(object item) { return(DataTemplateHelper.ResolveTemplate( ItemTemplate, ItemTemplateSelector, item )); }
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 )); }
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; } }
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 )); }
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(); }
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); }
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 } }
/// <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); }