rksoftware

Visual Studio とか C# とかが好きです

XAML Islands でコントロールを一通り表示してみる

XAML Islands で全ての UWP コントロールは使えなさそうな雰囲気だったので、Windows.UI.Xaml.Controls 名前空間のそれらしいクラスを画面に配置してみました。
UWP のコントロールは 100 以上あるらしく全ては把握押していないので画面に配置してエラーになるかならないかだけが判断基準です。
また、他にも UIElement はありそうな気もしますが一歩目の検証として試してみました。

■ 結果

全てではありませんでしたが大多数がエラーなく配置できました。
f:id:rksoftware:20190120193905j:plain

■ エラーにならなかったコントロール

  • AppBar
  • AppBarButton
  • AppBarElementContainer
  • AppBarSeparator
  • AppBarToggleButton
  • AutoSuggestBox
  • BitmapIcon
  • Border
  • Button
  • CalendarDatePicker
  • CalendarView
  • Canvas
  • CaptureElement
  • CheckBox
  • ComboBox
  • ComboBoxItem
  • CommandBar
  • CommandBarOverflowPresenter
  • ContentControl
  • ContentDialog
  • ContentPresenter
  • DatePicker
  • DropDownButton
  • FlipView
  • FlipViewItem
  • FlyoutPresenter
  • FontIcon
  • Frame
  • Grid
  • GridView
  • GridViewHeaderItem
  • GridViewItem
  • GroupItem
  • Hub
  • HubSection
  • HyperlinkButton
  • IconSourceElement
  • Image
  • InkCanvas
  • InkToolbar
  • InkToolbarBallpointPenButton
  • InkToolbarCustomPenButton
  • InkToolbarCustomToggleButton
  • InkToolbarCustomToolButton
  • InkToolbarEraserButton
  • InkToolbarFlyoutItem
  • InkToolbarHighlighterButton
  • InkToolbarPencilButton
  • InkToolbarPenConfigurationControl
  • InkToolbarStencilButton
  • ItemsControl
  • ItemsPresenter
  • ItemsStackPanel
  • ItemsWrapGrid
  • ListBox
  • ListBoxItem
  • ListView
  • ListViewHeaderItem
  • ListViewItem
  • Maps.MapControl
  • MediaElement
  • MediaPlayerElement
  • MediaPlayerPresenter
  • MediaTransportControls
  • MenuBar
  • MenuBarItem
  • MenuFlyoutItem
  • MenuFlyoutPresenter
  • MenuFlyoutSeparator
  • MenuFlyoutSubItem
  • NavigationView
  • NavigationViewItem
  • NavigationViewItemSeparator
  • NavigationViewList
  • Page
  • ParallaxView
  • PasswordBox
  • PathIcon
  • Pivot
  • PivotItem
  • ProgressBar
  • ProgressRing
  • RadioButton
  • RatingControl
  • RefreshContainer
  • RelativePanel
  • RichEditBox
  • RichTextBlock
  • ScrollContentPresenter
  • ScrollViewer
  • SemanticZoom
  • SettingsFlyout
  • Slider
  • SplitButton
  • SplitView
  • StackPanel
  • SwapChainPanel
  • SymbolIcon
  • TextBlock
  • TextBox
  • TimePicker
  • ToggleMenuFlyoutItem
  • ToggleSplitButton
  • ToggleSwitch
  • ToolTip
  • TreeView
  • TreeViewItem
  • TreeViewList
  • UserControl
  • VariableSizedWrapGrid
  • Viewbox
  • VirtualizingStackPanel
  • WebView

■ 検証コード

<Window x:Class="WpfApp1.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d"
        Title="Window1" Height="450" Width="800">
    <Grid x:Name="grid">
    </Grid>
</Window>
using System;
using System.Collections.Generic;
using System.Windows;

namespace WpfApp1
{
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();

            try
            {
                global::Windows.UI.Xaml.Hosting.WindowsXamlManager.InitializeForCurrentThread();

                var list = new List<Windows.UI.Xaml.UIElement>();
                {
                    list.Add(new Windows.UI.Xaml.Controls.AppBar());
                    list.Add(new Windows.UI.Xaml.Controls.AppBarButton());
                    list.Add(new Windows.UI.Xaml.Controls.AppBarElementContainer());
                    list.Add(new Windows.UI.Xaml.Controls.AppBarSeparator());
                    list.Add(new Windows.UI.Xaml.Controls.AppBarToggleButton());
                    list.Add(new Windows.UI.Xaml.Controls.AutoSuggestBox());
                    list.Add(new Windows.UI.Xaml.Controls.BitmapIcon());
                    list.Add(new Windows.UI.Xaml.Controls.Border());
                    list.Add(new Windows.UI.Xaml.Controls.Button());
                    list.Add(new Windows.UI.Xaml.Controls.CalendarDatePicker());
                    list.Add(new Windows.UI.Xaml.Controls.CalendarView());
                    //list.Add(new Windows.UI.Xaml.Controls.CalendarViewDayItem());
                    list.Add(new Windows.UI.Xaml.Controls.Canvas());
                    list.Add(new Windows.UI.Xaml.Controls.CaptureElement());
                    list.Add(new Windows.UI.Xaml.Controls.CheckBox());
                    //list.Add(new Windows.UI.Xaml.Controls.ColorPicker());
                    list.Add(new Windows.UI.Xaml.Controls.ComboBox());
                    list.Add(new Windows.UI.Xaml.Controls.ComboBoxItem());
                    list.Add(new Windows.UI.Xaml.Controls.CommandBar());
                    list.Add(new Windows.UI.Xaml.Controls.CommandBarOverflowPresenter());
                    list.Add(new Windows.UI.Xaml.Controls.ContentControl());
                    list.Add(new Windows.UI.Xaml.Controls.ContentDialog());
                    list.Add(new Windows.UI.Xaml.Controls.ContentPresenter());
                    list.Add(new Windows.UI.Xaml.Controls.DatePicker());
                    list.Add(new Windows.UI.Xaml.Controls.DropDownButton());
                    list.Add(new Windows.UI.Xaml.Controls.FlipView());
                    list.Add(new Windows.UI.Xaml.Controls.FlipViewItem());
                    list.Add(new Windows.UI.Xaml.Controls.FlyoutPresenter());
                    list.Add(new Windows.UI.Xaml.Controls.FontIcon());
                    list.Add(new Windows.UI.Xaml.Controls.Frame());
                    list.Add(new Windows.UI.Xaml.Controls.Grid());
                    list.Add(new Windows.UI.Xaml.Controls.GridView());
                    list.Add(new Windows.UI.Xaml.Controls.GridViewHeaderItem());
                    list.Add(new Windows.UI.Xaml.Controls.GridViewItem());
                    list.Add(new Windows.UI.Xaml.Controls.GroupItem());
                    //list.Add(new Windows.UI.Xaml.Controls.HandwritingView());
                    list.Add(new Windows.UI.Xaml.Controls.Hub());
                    list.Add(new Windows.UI.Xaml.Controls.HubSection());
                    list.Add(new Windows.UI.Xaml.Controls.HyperlinkButton());
                    list.Add(new Windows.UI.Xaml.Controls.IconSourceElement());
                    list.Add(new Windows.UI.Xaml.Controls.Image());
                    list.Add(new Windows.UI.Xaml.Controls.InkCanvas());
                    list.Add(new Windows.UI.Xaml.Controls.InkToolbar());
                    list.Add(new Windows.UI.Xaml.Controls.InkToolbarBallpointPenButton());
                    list.Add(new Windows.UI.Xaml.Controls.InkToolbarCustomPenButton());
                    list.Add(new Windows.UI.Xaml.Controls.InkToolbarCustomToggleButton());
                    list.Add(new Windows.UI.Xaml.Controls.InkToolbarCustomToolButton());
                    list.Add(new Windows.UI.Xaml.Controls.InkToolbarEraserButton());
                    list.Add(new Windows.UI.Xaml.Controls.InkToolbarFlyoutItem());
                    list.Add(new Windows.UI.Xaml.Controls.InkToolbarHighlighterButton());
                    list.Add(new Windows.UI.Xaml.Controls.InkToolbarPencilButton());
                    list.Add(new Windows.UI.Xaml.Controls.InkToolbarPenConfigurationControl());
                    list.Add(new Windows.UI.Xaml.Controls.InkToolbarStencilButton());
                    list.Add(new Windows.UI.Xaml.Controls.ItemsControl());
                    list.Add(new Windows.UI.Xaml.Controls.ItemsPresenter());
                    list.Add(new Windows.UI.Xaml.Controls.ItemsStackPanel());
                    list.Add(new Windows.UI.Xaml.Controls.ItemsWrapGrid());
                    list.Add(new Windows.UI.Xaml.Controls.ListBox());
                    list.Add(new Windows.UI.Xaml.Controls.ListBoxItem());
                    list.Add(new Windows.UI.Xaml.Controls.ListView());
                    list.Add(new Windows.UI.Xaml.Controls.ListViewHeaderItem());
                    list.Add(new Windows.UI.Xaml.Controls.ListViewItem());
                    list.Add(new Windows.UI.Xaml.Controls.Maps.MapControl());
                    list.Add(new Windows.UI.Xaml.Controls.MediaElement());
                    list.Add(new Windows.UI.Xaml.Controls.MediaPlayerElement());
                    list.Add(new Windows.UI.Xaml.Controls.MediaPlayerPresenter());
                    list.Add(new Windows.UI.Xaml.Controls.MediaTransportControls());
                    list.Add(new Windows.UI.Xaml.Controls.MenuBar());
                    list.Add(new Windows.UI.Xaml.Controls.MenuBarItem());
                    list.Add(new Windows.UI.Xaml.Controls.MenuFlyoutItem());
                    list.Add(new Windows.UI.Xaml.Controls.MenuFlyoutPresenter());
                    list.Add(new Windows.UI.Xaml.Controls.MenuFlyoutSeparator());
                    list.Add(new Windows.UI.Xaml.Controls.MenuFlyoutSubItem());
                    list.Add(new Windows.UI.Xaml.Controls.NavigationView());
                    list.Add(new Windows.UI.Xaml.Controls.NavigationViewItem());
                    list.Add(new Windows.UI.Xaml.Controls.NavigationViewItemSeparator());
                    list.Add(new Windows.UI.Xaml.Controls.NavigationViewList());
                    list.Add(new Windows.UI.Xaml.Controls.Page());
                    list.Add(new Windows.UI.Xaml.Controls.ParallaxView());
                    list.Add(new Windows.UI.Xaml.Controls.PasswordBox());
                    list.Add(new Windows.UI.Xaml.Controls.PathIcon());
                    list.Add(new Windows.UI.Xaml.Controls.Pivot());
                    list.Add(new Windows.UI.Xaml.Controls.PivotItem());
                    list.Add(new Windows.UI.Xaml.Controls.ProgressBar());
                    list.Add(new Windows.UI.Xaml.Controls.ProgressRing());
                    list.Add(new Windows.UI.Xaml.Controls.RadioButton());
                    list.Add(new Windows.UI.Xaml.Controls.RatingControl());
                    list.Add(new Windows.UI.Xaml.Controls.RefreshContainer());
                    list.Add(new Windows.UI.Xaml.Controls.RelativePanel());
                    list.Add(new Windows.UI.Xaml.Controls.RichEditBox());
                    list.Add(new Windows.UI.Xaml.Controls.RichTextBlock());
                    list.Add(new Windows.UI.Xaml.Controls.ScrollContentPresenter());
                    list.Add(new Windows.UI.Xaml.Controls.ScrollViewer());
                    list.Add(new Windows.UI.Xaml.Controls.SemanticZoom());
                    list.Add(new Windows.UI.Xaml.Controls.SettingsFlyout());
                    list.Add(new Windows.UI.Xaml.Controls.Slider());
                    list.Add(new Windows.UI.Xaml.Controls.SplitButton());
                    list.Add(new Windows.UI.Xaml.Controls.SplitView());
                    list.Add(new Windows.UI.Xaml.Controls.StackPanel());
                    //list.Add(new Windows.UI.Xaml.Controls.SwapChainBackgroundPanel());
                    list.Add(new Windows.UI.Xaml.Controls.SwapChainPanel());
                    //list.Add(new Windows.UI.Xaml.Controls.SwipeControl());
                    list.Add(new Windows.UI.Xaml.Controls.SymbolIcon());
                    list.Add(new Windows.UI.Xaml.Controls.TextBlock());
                    list.Add(new Windows.UI.Xaml.Controls.TextBox());
                    list.Add(new Windows.UI.Xaml.Controls.TimePicker());
                    list.Add(new Windows.UI.Xaml.Controls.ToggleMenuFlyoutItem());
                    list.Add(new Windows.UI.Xaml.Controls.ToggleSplitButton());
                    list.Add(new Windows.UI.Xaml.Controls.ToggleSwitch());
                    list.Add(new Windows.UI.Xaml.Controls.ToolTip());
                    list.Add(new Windows.UI.Xaml.Controls.TreeView());
                    list.Add(new Windows.UI.Xaml.Controls.TreeViewItem());
                    list.Add(new Windows.UI.Xaml.Controls.TreeViewList());
                    list.Add(new Windows.UI.Xaml.Controls.UserControl());
                    list.Add(new Windows.UI.Xaml.Controls.VariableSizedWrapGrid());
                    list.Add(new Windows.UI.Xaml.Controls.Viewbox());
                    list.Add(new Windows.UI.Xaml.Controls.VirtualizingStackPanel());
                    list.Add(new Windows.UI.Xaml.Controls.WebView());
                    //list.Add(new Windows.UI.Xaml.Controls.WrapGrid());
                };

                Windows.UI.Xaml.Controls.StackPanel stackPanel;
                grid.Children.Add(new Microsoft.Toolkit.Wpf.UI.XamlHost.WindowsXamlHost
                {
                    Child = new Windows.UI.Xaml.Controls.ScrollViewer
                    {
                        Content = stackPanel = new Windows.UI.Xaml.Controls.StackPanel()
                    }
                });
                foreach (var c in list)
                {
                    stackPanel.Children.Add(c);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
    }
}