本文整理汇总了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();
}
示例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();
}
示例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();
}