当前位置: 首页>>代码示例>>C#>>正文


C# List.OfType方法代码示例

本文整理汇总了C#中System.Windows.Documents.List.OfType方法的典型用法代码示例。如果您正苦于以下问题:C# List.OfType方法的具体用法?C# List.OfType怎么用?C# List.OfType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在System.Windows.Documents.List的用法示例。


在下文中一共展示了List.OfType方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: CreateControls

        /// <summary>Creates the UI elements for the given HTML node and HTML view.</summary>
        /// <param name="node">The HTML node.</param>
        /// <param name="htmlView">The HTML view.</param>
        /// <returns>The UI elements.</returns>
        public DependencyObject[] CreateControls(HtmlNode node, IHtmlView htmlView)
        {
            var controls = new List<Grid>();
            foreach (var child in node.Children.OfType<HtmlTagNode>().Where(c => c.Name == "li"))
            {
                var grid = new Grid();
                grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(20)});
                grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) });

                var textBlock = CreateBulletSymbol(htmlView);
                                grid.Children.Add(textBlock);
                Grid.SetColumn(textBlock, 0);

                var panel = new StackPanel();

                child.WrapWithHtmlTag();
                foreach (var c in child.GetChildControls(htmlView).OfType<UIElement>())
                {
                    var frameworkElement = c as FrameworkElement;
                    if (frameworkElement != null)
                        frameworkElement.HorizontalAlignment = HorizontalAlignment.Stretch;

                    panel.Children.Add(c);
                }

                grid.Children.Add(panel);
                Grid.SetColumn(panel, 1);

                controls.Add(grid);
            }

            AdjustMargins(htmlView, controls);
            return controls.OfType<DependencyObject>().ToArray();
        }
开发者ID:RareNCool,项目名称:MyToolkit,代码行数:38,代码来源:UlGenerator.cs

示例2: Generate

		public DependencyObject[] Generate(HtmlNode node, IHtmlTextBlock textBlock)
		{
			var list = new List<Grid>();
			foreach (var child in node.Children.Where(c => c.Value == "li"))
			{
				var grid = new Grid();
				grid.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto });
				grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) });

				var tb = new TextBlock();
				tb.Foreground = textBlock.Foreground;
				tb.FontSize = textBlock.FontSize;
				tb.FontFamily = textBlock.FontFamily;
				tb.Margin = new Thickness();
				tb.Text = "• ";

				grid.Children.Add(tb);
				Grid.SetColumn(tb, 0);

				var panel = new StackPanel();

				child.ToHtmlBlock();
				foreach (var c in child.GetLeaves(textBlock).OfType<UIElement>())
				{
					var frameworkElement = c as FrameworkElement;
					if (frameworkElement != null)
						frameworkElement.HorizontalAlignment = HorizontalAlignment.Stretch;
					panel.Children.Add(c);
				}

				grid.Children.Add(panel);
				Grid.SetColumn(panel, 1);

				list.Add(grid);
			}

			var first = list.FirstOrDefault();
			if (first != null)
				first.Margin = new Thickness(0, textBlock.ParagraphMargin, 0, 0);

			var last = list.LastOrDefault();
			if (last != null)
				last.Margin = new Thickness(0, 0, 0, textBlock.ParagraphMargin);

			return list.OfType<DependencyObject>().ToArray();
		}
开发者ID:fstn,项目名称:WindowsPhoneApps,代码行数:46,代码来源:UlGenerator.cs

示例3: RefreshContents

        internal void RefreshContents()
        {
            if (!_allowRefreshContents)
                return;

            var contentsFoundUnderMe = new LogicalTreeAdapter(this).Descendants<DependencyObject>().Where(d => d.Item is ManagedContent).Select(d => d.Item).Cast<ManagedContent>();
            var contentsFoundInFloatingMode = _floatingWindows.SelectMany(d => d.HostedPane.Items.Cast<ManagedContent>());
            DockableContent contentFoundInFlyoutMode = null;

            if (_flyoutWindow != null &&
                _flyoutWindow.ReferencedPane != null &&
                _flyoutWindow.ReferencedPane.Items.Count > 0)
            {
                contentFoundInFlyoutMode =  _flyoutWindow.ReferencedPane.Items[0] as DockableContent;
            }

            var contentsFound = new List<ManagedContent>();
            contentsFound.AddRange(contentsFoundUnderMe);
            contentsFound.AddRange(contentsFoundInFloatingMode);
            if (contentFoundInFlyoutMode !=  null)
                contentsFound.Add(contentFoundInFlyoutMode);

            var dockableContensToRemove = DockableContents.Except(contentsFound.OfType<DockableContent>());
            var dockableContensToAdd = contentsFound.OfType<DockableContent>().Except(DockableContents);

            dockableContensToAdd.ToArray().ForEach(d =>
            {
                if (d.State != DockableContentState.Hidden)
                    DockableContents.Add(d);
            });
            dockableContensToRemove.ToArray().ForEach(d =>
            {
                if (d.State != DockableContentState.Hidden)
                    DockableContents.Remove(d);
            });

            var documentsToRemove = Documents.Except(contentsFound.OfType<DocumentContent>());
            var documentsToAdd = contentsFound.OfType<DocumentContent>().Except(Documents);

            documentsToAdd.ToArray().ForEach(d => Documents.Add(d));
            documentsToRemove.ToArray().ForEach(d => Documents.Remove(d));

            //refresh MainDocumentPane
            if (MainDocumentPane == null ||
                MainDocumentPane.GetManager() != this)
            {
                ILinqToTree<DependencyObject> itemFound = new LogicalTreeAdapter(this).Descendants<DependencyObject>().FirstOrDefault(d => d.Item is DocumentPane);

                MainDocumentPane = itemFound != null ? itemFound.Item as DocumentPane : null;
            }

            //_floatingWindows.ForEach(fl => fl.CheckContents());
            CheckValidPanesFromTabGroups();
        }
开发者ID:alexcepoi,项目名称:ShareTabWin,代码行数:54,代码来源:DockingManager.cs


注:本文中的System.Windows.Documents.List.OfType方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。