| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「WPF レイアウト サンプル」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
(ページの作成:「==WPF レイアウト サンプル== [WPF][WPF レイアウト] ===Explorer風=== File:1452_wpf_layout01.jpg *GridSplitterでサイズ変更可(行、列) *Sho…」)
 
1行目: 1行目:
 
==WPF レイアウト サンプル==
 
==WPF レイアウト サンプル==
[WPF][WPF レイアウト]
+
[[WPF][WPF レイアウト]]
  
 
===Explorer風===
 
===Explorer風===
6行目: 6行目:
 
*GridSplitterでサイズ変更可(行、列)
 
*GridSplitterでサイズ変更可(行、列)
 
*ShowGridLines="True" でグリッドレイアウトの分割を可視化
 
*ShowGridLines="True" でグリッドレイアウトの分割を可視化
  <DockPanel>
+
  &lt;DockPanel&gt;
     <Button Content="Menu" DockPanel.Dock="Top"/>
+
     &lt;Button Content="Menu" DockPanel.Dock="Top"/&gt;
     <Button Content="Status" DockPanel.Dock="Bottom"/>
+
     &lt;Button Content="Status" DockPanel.Dock="Bottom"/&gt;
     <Grid ShowGridLines="True">
+
     &lt;Grid ShowGridLines="True"&gt;
         <Grid.ColumnDefinitions>
+
         &lt;Grid.ColumnDefinitions&gt;
             <ColumnDefinition MinWidth="100" Width="1*"/>
+
             &lt;ColumnDefinition MinWidth="100" Width="1*"/&gt;
             <ColumnDefinition Width="Auto"/>
+
             &lt;ColumnDefinition Width="Auto"/&gt;
             <ColumnDefinition MinWidth="100" Width="2*"/>
+
             &lt;ColumnDefinition MinWidth="100" Width="2*"/&gt;
         </Grid.ColumnDefinitions>
+
         &lt;/Grid.ColumnDefinitions&gt;
         <Grid.RowDefinitions>
+
         &lt;Grid.RowDefinitions&gt;
             <RowDefinition MinHeight="100" Height="1*"/>
+
             &lt;RowDefinition MinHeight="100" Height="1*"/&gt;
             <RowDefinition Height="Auto"/>
+
             &lt;RowDefinition Height="Auto"/&gt;
             <RowDefinition MinHeight="100" Height="1*"/>
+
             &lt;RowDefinition MinHeight="100" Height="1*"/&gt;
         </Grid.RowDefinitions>
+
         &lt;/Grid.RowDefinitions&gt;
         <Button Grid.Column="0" Grid.Row="0"  Content="Left Top"/>
+
         &lt;Button Grid.Column="0" Grid.Row="0"  Content="Left Top"/&gt;
         <GridSplitter Grid.Column="0" Grid.Row="1" Height="5" VerticalAlignment="Center" HorizontalAlignment="Stretch" />
+
         &lt;GridSplitter Grid.Column="0" Grid.Row="1" Height="5" VerticalAlignment="Center" HorizontalAlignment="Stretch" /&gt;
         <Button Grid.Column="0" Grid.Row="2"  Content="Left Bottom"/>
+
         &lt;Button Grid.Column="0" Grid.Row="2"  Content="Left Bottom"/&gt;
         <GridSplitter Grid.Column="1" Width="5" Grid.RowSpan="3" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+
         &lt;GridSplitter Grid.Column="1" Width="5" Grid.RowSpan="3" VerticalAlignment="Stretch" HorizontalAlignment="Center"/&gt;
         <Button Grid.Column="2" Grid.Row="0" Grid.RowSpan="3"  Content="Content"/>
+
         &lt;Button Grid.Column="2" Grid.Row="0" Grid.RowSpan="3"  Content="Content"/&gt;
     </Grid>
+
     &lt;/Grid&gt;
  </DockPanel>
+
  &lt;/DockPanel&gt;
 
===ツリービューを配置===
 
===ツリービューを配置===
 
[[File:1453_wpf_layout02.jpg]]
 
[[File:1453_wpf_layout02.jpg]]
 
*TreeView を配置し、スプリットバー移動や、ツリーの展開で動的にスクロールバーが表示されるようにする
 
*TreeView を配置し、スプリットバー移動や、ツリーの展開で動的にスクロールバーが表示されるようにする
  <DockPanel>
+
  &lt;DockPanel&gt;
     <Button Content="Menu" DockPanel.Dock="Top"/>
+
     &lt;Button Content="Menu" DockPanel.Dock="Top"/&gt;
     <Button Content="Status" DockPanel.Dock="Bottom"/>
+
     &lt;Button Content="Status" DockPanel.Dock="Bottom"/&gt;
     <Grid ShowGridLines="True">
+
     &lt;Grid ShowGridLines="True"&gt;
         <Grid.ColumnDefinitions>
+
         &lt;Grid.ColumnDefinitions&gt;
             <ColumnDefinition MinWidth="100" Width="1*"/>
+
             &lt;ColumnDefinition MinWidth="100" Width="1*"/&gt;
             <ColumnDefinition Width="Auto"/>
+
             &lt;ColumnDefinition Width="Auto"/&gt;
             <ColumnDefinition MinWidth="100" Width="2*"/>
+
             &lt;ColumnDefinition MinWidth="100" Width="2*"/&gt;
         </Grid.ColumnDefinitions>
+
         &lt;/Grid.ColumnDefinitions&gt;
         <Grid.RowDefinitions>
+
         &lt;Grid.RowDefinitions&gt;
             <RowDefinition MinHeight="100" Height="1*"/>
+
             &lt;RowDefinition MinHeight="100" Height="1*"/&gt;
             <RowDefinition Height="Auto"/>
+
             &lt;RowDefinition Height="Auto"/&gt;
             <RowDefinition MinHeight="100" Height="1*"/>
+
             &lt;RowDefinition MinHeight="100" Height="1*"/&gt;
         </Grid.RowDefinitions>
+
         &lt;/Grid.RowDefinitions&gt;
         <TreeView Grid.Column="0" ItemsSource="{Binding TreeItems}">
+
         &lt;TreeView Grid.Column="0" ItemsSource="{Binding TreeItems}"&gt;
             <TreeView.ItemTemplate>
+
             &lt;TreeView.ItemTemplate&gt;
                 <HierarchicalDataTemplate DataType="{x:Type local:TreeEntity}" ItemsSource="{Binding Children}">
+
                 &lt;HierarchicalDataTemplate DataType="{x:Type local:TreeEntity}" ItemsSource="{Binding Children}"&gt;
                     <TextBlock Text="{Binding Name}" />
+
                     &lt;TextBlock Text="{Binding Name}" /&gt;
                 </HierarchicalDataTemplate>
+
                 &lt;/HierarchicalDataTemplate&gt;
             </TreeView.ItemTemplate>
+
             &lt;/TreeView.ItemTemplate&gt;
         </TreeView>
+
         &lt;/TreeView&gt;
         <GridSplitter Grid.Column="0" Grid.Row="1" Height="5" VerticalAlignment="Center" HorizontalAlignment="Stretch" />
+
         &lt;GridSplitter Grid.Column="0" Grid.Row="1" Height="5" VerticalAlignment="Center" HorizontalAlignment="Stretch" /&gt;
         <Button Grid.Column="0" Grid.Row="2"  Content="Left Bottom"/>
+
         &lt;Button Grid.Column="0" Grid.Row="2"  Content="Left Bottom"/&gt;
         <GridSplitter Grid.Column="1" Width="5" Grid.RowSpan="3" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+
         &lt;GridSplitter Grid.Column="1" Width="5" Grid.RowSpan="3" VerticalAlignment="Stretch" HorizontalAlignment="Center"/&gt;
         <Button Grid.Column="2" Grid.Row="0" Grid.RowSpan="3"  Content="{Binding Name}"/>
+
         &lt;Button Grid.Column="2" Grid.Row="0" Grid.RowSpan="3"  Content="{Binding Name}"/&gt;
     </Grid>
+
     &lt;/Grid&gt;
  </DockPanel>
+
  &lt;/DockPanel&gt;
  
 
==ツリービューに対するコントロールボックスを追加==
 
==ツリービューに対するコントロールボックスを追加==
62行目: 62行目:
 
*DocPanel により、ラベルとボタンをそれぞれ、左、右寄せ
 
*DocPanel により、ラベルとボタンをそれぞれ、左、右寄せ
 
*コンテンツとしてテキストを可変サイズにする
 
*コンテンツとしてテキストを可変サイズにする
  <DockPanel>
+
  &lt;DockPanel&gt;
     <Button Content="Menu" DockPanel.Dock="Top"/>
+
     &lt;Button Content="Menu" DockPanel.Dock="Top"/&gt;
     <Button Content="Status" DockPanel.Dock="Bottom"/>
+
     &lt;Button Content="Status" DockPanel.Dock="Bottom"/&gt;
     <Grid ShowGridLines="False">
+
     &lt;Grid ShowGridLines="False"&gt;
         <Grid.ColumnDefinitions>
+
         &lt;Grid.ColumnDefinitions&gt;
             <ColumnDefinition MinWidth="100" Width="1*"/>
+
             &lt;ColumnDefinition MinWidth="100" Width="1*"/&gt;
             <ColumnDefinition Width="Auto"/>
+
             &lt;ColumnDefinition Width="Auto"/&gt;
             <ColumnDefinition MinWidth="100" Width="2*"/>
+
             &lt;ColumnDefinition MinWidth="100" Width="2*"/&gt;
         </Grid.ColumnDefinitions>
+
         &lt;/Grid.ColumnDefinitions&gt;
         <Grid.RowDefinitions>
+
         &lt;Grid.RowDefinitions&gt;
             <RowDefinition MinHeight="100" Height="1*"/>
+
             &lt;RowDefinition MinHeight="100" Height="1*"/&gt;
             <RowDefinition Height="Auto"/>
+
             &lt;RowDefinition Height="Auto"/&gt;
             <RowDefinition MinHeight="100" Height="1*"/>
+
             &lt;RowDefinition MinHeight="100" Height="1*"/&gt;
         </Grid.RowDefinitions>
+
         &lt;/Grid.RowDefinitions&gt;
         <Grid Grid.Column="0" Grid.Row="0" ShowGridLines="False">
+
         &lt;Grid Grid.Column="0" Grid.Row="0" ShowGridLines="False"&gt;
             <Grid.RowDefinitions>
+
             &lt;Grid.RowDefinitions&gt;
                 <RowDefinition Height="Auto"/>
+
                 &lt;RowDefinition Height="Auto"/&gt;
                 <RowDefinition Height="*"/>
+
                 &lt;RowDefinition Height="*"/&gt;
             </Grid.RowDefinitions>
+
             &lt;/Grid.RowDefinitions&gt;
             <DockPanel Grid.Row="0">
+
             &lt;DockPanel Grid.Row="0"&gt;
                 <TextBlock Text="Search" Width="Auto" DockPanel.Dock="Left"/>
+
                 &lt;TextBlock Text="Search" Width="Auto" DockPanel.Dock="Left"/&gt;
                 <Button Content="Control" Width="Auto" DockPanel.Dock="Right"/>
+
                 &lt;Button Content="Control" Width="Auto" DockPanel.Dock="Right"/&gt;
                 <TextBox />
+
                 &lt;TextBox /&gt;
             </DockPanel>
+
             &lt;/DockPanel&gt;
             <TreeView Grid.Row="1" ItemsSource="{Binding TreeItems}">
+
             &lt;TreeView Grid.Row="1" ItemsSource="{Binding TreeItems}"&gt;
                 <TreeView.ItemTemplate>
+
                 &lt;TreeView.ItemTemplate&gt;
                     <HierarchicalDataTemplate DataType="{x:Type local:TreeEntity}" ItemsSource="{Binding Children}">
+
                     &lt;HierarchicalDataTemplate DataType="{x:Type local:TreeEntity}" ItemsSource="{Binding Children}"&gt;
                         <TextBlock Text="{Binding Name}" />
+
                         &lt;TextBlock Text="{Binding Name}" /&gt;
                     </HierarchicalDataTemplate>
+
                     &lt;/HierarchicalDataTemplate&gt;
                 </TreeView.ItemTemplate>
+
                 &lt;/TreeView.ItemTemplate&gt;
             </TreeView>
+
             &lt;/TreeView&gt;
         </Grid>
+
         &lt;/Grid&gt;
         <GridSplitter Grid.Column="0" Grid.Row="1" Height="5" VerticalAlignment="Center" HorizontalAlignment="Stretch" />
+
         &lt;GridSplitter Grid.Column="0" Grid.Row="1" Height="5" VerticalAlignment="Center" HorizontalAlignment="Stretch" /&gt;
         <Grid Grid.Column="0" Grid.Row="2" ShowGridLines="False">
+
         &lt;Grid Grid.Column="0" Grid.Row="2" ShowGridLines="False"&gt;
             <Grid.RowDefinitions>
+
             &lt;Grid.RowDefinitions&gt;
                 <RowDefinition Height="Auto"/>
+
                 &lt;RowDefinition Height="Auto"/&gt;
                 <RowDefinition Height="*"/>
+
                 &lt;RowDefinition Height="*"/&gt;
             </Grid.RowDefinitions>
+
             &lt;/Grid.RowDefinitions&gt;
             <DockPanel Grid.Row="0">
+
             &lt;DockPanel Grid.Row="0"&gt;
                 <TextBlock Text="Search" Width="Auto" DockPanel.Dock="Left"/>
+
                 &lt;TextBlock Text="Search" Width="Auto" DockPanel.Dock="Left"/&gt;
                 <Button Content="Control" Width="Auto" DockPanel.Dock="Right"/>
+
                 &lt;Button Content="Control" Width="Auto" DockPanel.Dock="Right"/&gt;
                 <TextBox />
+
                 &lt;TextBox /&gt;
             </DockPanel>
+
             &lt;/DockPanel&gt;
             <TreeView Grid.Row="1" ItemsSource="{Binding TreeItems}">
+
             &lt;TreeView Grid.Row="1" ItemsSource="{Binding TreeItems}"&gt;
                 <TreeView.ItemTemplate>
+
                 &lt;TreeView.ItemTemplate&gt;
                     <HierarchicalDataTemplate DataType="{x:Type local:TreeEntity}" ItemsSource="{Binding Children}">
+
                     &lt;HierarchicalDataTemplate DataType="{x:Type local:TreeEntity}" ItemsSource="{Binding Children}"&gt;
                         <TextBlock Text="{Binding Name}" />
+
                         &lt;TextBlock Text="{Binding Name}" /&gt;
                     </HierarchicalDataTemplate>
+
                     &lt;/HierarchicalDataTemplate&gt;
                 </TreeView.ItemTemplate>
+
                 &lt;/TreeView.ItemTemplate&gt;
             </TreeView>
+
             &lt;/TreeView&gt;
         </Grid>
+
         &lt;/Grid&gt;
         <GridSplitter Grid.Column="1" Width="5" Grid.RowSpan="3" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+
         &lt;GridSplitter Grid.Column="1" Width="5" Grid.RowSpan="3" VerticalAlignment="Stretch" HorizontalAlignment="Center"/&gt;
         <Button Grid.Column="2" Grid.Row="0" Grid.RowSpan="3"  Content="{Binding Name}"/>
+
         &lt;Button Grid.Column="2" Grid.Row="0" Grid.RowSpan="3"  Content="{Binding Name}"/&gt;
     </Grid>
+
     &lt;/Grid&gt;
  </DockPanel>
+
  &lt;/DockPanel&gt;
  
 
===メニューとステータスバー追加===
 
===メニューとステータスバー追加===
 
[[File:1455_wpf_layout04.jpg]]
 
[[File:1455_wpf_layout04.jpg]]
  <DockPanel>
+
  &lt;DockPanel&gt;
     <Menu DockPanel.Dock="Top" Height="Auto">
+
     &lt;Menu DockPanel.Dock="Top" Height="Auto"&gt;
         <MenuItem Header="ファイル(_F)" />
+
         &lt;MenuItem Header="ファイル(_F)" /&gt;
         <MenuItem Header="編集(_E)" />
+
         &lt;MenuItem Header="編集(_E)" /&gt;
         <MenuItem Header="オプション(_O)">
+
         &lt;MenuItem Header="オプション(_O)"&gt;
             <MenuItem IsCheckable="True" Header="オプション1" />
+
             &lt;MenuItem IsCheckable="True" Header="オプション1" /&gt;
             <MenuItem IsCheckable="True" Header="オプション2" />
+
             &lt;MenuItem IsCheckable="True" Header="オプション2" /&gt;
             <MenuItem IsCheckable="True" Header="オプション3" />
+
             &lt;MenuItem IsCheckable="True" Header="オプション3" /&gt;
         </MenuItem>
+
         &lt;/MenuItem&gt;
     </Menu>
+
     &lt;/Menu&gt;
     <StatusBar DockPanel.Dock="Bottom">
+
     &lt;StatusBar DockPanel.Dock="Bottom"&gt;
         <StatusBarItem Width="60" DockPanel.Dock="Right">Panel2</StatusBarItem>
+
         &lt;StatusBarItem Width="60" DockPanel.Dock="Right"&gt;Panel2&lt;/StatusBarItem&gt;
         <Separator DockPanel.Dock="Right" />
+
         &lt;Separator DockPanel.Dock="Right" /&gt;
         <StatusBarItem Width="60" DockPanel.Dock="Right">Panel3</StatusBarItem>
+
         &lt;StatusBarItem Width="60" DockPanel.Dock="Right"&gt;Panel3&lt;/StatusBarItem&gt;
         <Separator DockPanel.Dock="Right" />
+
         &lt;Separator DockPanel.Dock="Right" /&gt;
         <StatusBarItem>Panel1</StatusBarItem>
+
         &lt;StatusBarItem&gt;Panel1&lt;/StatusBarItem&gt;
     </StatusBar>
+
     &lt;/StatusBar&gt;
     <Grid ShowGridLines="False">
+
     &lt;Grid ShowGridLines="False"&gt;
         <Grid.ColumnDefinitions>
+
         &lt;Grid.ColumnDefinitions&gt;
             <ColumnDefinition MinWidth="100" Width="1*"/>
+
             &lt;ColumnDefinition MinWidth="100" Width="1*"/&gt;
             <ColumnDefinition Width="Auto"/>
+
             &lt;ColumnDefinition Width="Auto"/&gt;
             <ColumnDefinition MinWidth="100" Width="2*"/>
+
             &lt;ColumnDefinition MinWidth="100" Width="2*"/&gt;
         </Grid.ColumnDefinitions>
+
         &lt;/Grid.ColumnDefinitions&gt;
         <Grid.RowDefinitions>
+
         &lt;Grid.RowDefinitions&gt;
             <RowDefinition MinHeight="100" Height="1*"/>
+
             &lt;RowDefinition MinHeight="100" Height="1*"/&gt;
             <RowDefinition Height="Auto"/>
+
             &lt;RowDefinition Height="Auto"/&gt;
             <RowDefinition MinHeight="100" Height="1*"/>
+
             &lt;RowDefinition MinHeight="100" Height="1*"/&gt;
         </Grid.RowDefinitions>
+
         &lt;/Grid.RowDefinitions&gt;
         <Grid Grid.Column="0" Grid.Row="0" ShowGridLines="False">
+
         &lt;Grid Grid.Column="0" Grid.Row="0" ShowGridLines="False"&gt;
             <Grid.RowDefinitions>
+
             &lt;Grid.RowDefinitions&gt;
                 <RowDefinition Height="Auto"/>
+
                 &lt;RowDefinition Height="Auto"/&gt;
                 <RowDefinition Height="*"/>
+
                 &lt;RowDefinition Height="*"/&gt;
             </Grid.RowDefinitions>
+
             &lt;/Grid.RowDefinitions&gt;
             <DockPanel Grid.Row="0">
+
             &lt;DockPanel Grid.Row="0"&gt;
                 <TextBlock Text="Search" Width="Auto" DockPanel.Dock="Left"/>
+
                 &lt;TextBlock Text="Search" Width="Auto" DockPanel.Dock="Left"/&gt;
                 <Button Content="Control" Width="Auto" DockPanel.Dock="Right"/>
+
                 &lt;Button Content="Control" Width="Auto" DockPanel.Dock="Right"/&gt;
                 <TextBox />
+
                 &lt;TextBox /&gt;
             </DockPanel>
+
             &lt;/DockPanel&gt;
             <TreeView Grid.Row="1" ItemsSource="{Binding TreeItems}">
+
             &lt;TreeView Grid.Row="1" ItemsSource="{Binding TreeItems}"&gt;
                 <TreeView.ItemTemplate>
+
                 &lt;TreeView.ItemTemplate&gt;
                     <HierarchicalDataTemplate DataType="{x:Type local:TreeEntity}" ItemsSource="{Binding Children}">
+
                     &lt;HierarchicalDataTemplate DataType="{x:Type local:TreeEntity}" ItemsSource="{Binding Children}"&gt;
                         <TextBlock Text="{Binding Name}" />
+
                         &lt;TextBlock Text="{Binding Name}" /&gt;
                     </HierarchicalDataTemplate>
+
                     &lt;/HierarchicalDataTemplate&gt;
                 </TreeView.ItemTemplate>
+
                 &lt;/TreeView.ItemTemplate&gt;
             </TreeView>
+
             &lt;/TreeView&gt;
         </Grid>
+
         &lt;/Grid&gt;
         <GridSplitter Grid.Column="0" Grid.Row="1" Height="5" VerticalAlignment="Center" HorizontalAlignment="Stretch" />
+
         &lt;GridSplitter Grid.Column="0" Grid.Row="1" Height="5" VerticalAlignment="Center" HorizontalAlignment="Stretch" /&gt;
         <Grid Grid.Column="0" Grid.Row="2" ShowGridLines="False">
+
         &lt;Grid Grid.Column="0" Grid.Row="2" ShowGridLines="False"&gt;
             <Grid.RowDefinitions>
+
             &lt;Grid.RowDefinitions&gt;
                 <RowDefinition Height="Auto"/>
+
                 &lt;RowDefinition Height="Auto"/&gt;
                 <RowDefinition Height="*"/>
+
                 &lt;RowDefinition Height="*"/&gt;
             </Grid.RowDefinitions>
+
             &lt;/Grid.RowDefinitions&gt;
             <DockPanel Grid.Row="0">
+
             &lt;DockPanel Grid.Row="0"&gt;
                 <TextBlock Text="Search" Width="Auto" DockPanel.Dock="Left"/>
+
                 &lt;TextBlock Text="Search" Width="Auto" DockPanel.Dock="Left"/&gt;
                 <Button Content="Control" Width="Auto" DockPanel.Dock="Right"/>
+
                 &lt;Button Content="Control" Width="Auto" DockPanel.Dock="Right"/&gt;
                 <TextBox />
+
                 &lt;TextBox /&gt;
             </DockPanel>
+
             &lt;/DockPanel&gt;
             <TreeView Grid.Row="1" ItemsSource="{Binding TreeItems}">
+
             &lt;TreeView Grid.Row="1" ItemsSource="{Binding TreeItems}"&gt;
                 <TreeView.ItemTemplate>
+
                 &lt;TreeView.ItemTemplate&gt;
                     <HierarchicalDataTemplate DataType="{x:Type local:TreeEntity}" ItemsSource="{Binding Children}">
+
                     &lt;HierarchicalDataTemplate DataType="{x:Type local:TreeEntity}" ItemsSource="{Binding Children}"&gt;
                         <TextBlock Text="{Binding Name}" />
+
                         &lt;TextBlock Text="{Binding Name}" /&gt;
                     </HierarchicalDataTemplate>
+
                     &lt;/HierarchicalDataTemplate&gt;
                 </TreeView.ItemTemplate>
+
                 &lt;/TreeView.ItemTemplate&gt;
             </TreeView>
+
             &lt;/TreeView&gt;
         </Grid>
+
         &lt;/Grid&gt;
         <GridSplitter Grid.Column="1" Width="5" Grid.RowSpan="3" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
+
         &lt;GridSplitter Grid.Column="1" Width="5" Grid.RowSpan="3" VerticalAlignment="Stretch" HorizontalAlignment="Center"/&gt;
         <Button Grid.Column="2" Grid.Row="0" Grid.RowSpan="3"  Content="{Binding Name}"/>
+
         &lt;Button Grid.Column="2" Grid.Row="0" Grid.RowSpan="3"  Content="{Binding Name}"/&gt;
     </Grid>
+
     &lt;/Grid&gt;
  </DockPanel>
+
  &lt;/DockPanel&gt;

2020年2月15日 (土) 08:07時点における版

WPF レイアウト サンプル

[[WPF][WPF レイアウト]]

Explorer風

1452 wpf layout01.jpg

  • GridSplitterでサイズ変更可(行、列)
  • ShowGridLines="True" でグリッドレイアウトの分割を可視化
<DockPanel>
    <Button Content="Menu" DockPanel.Dock="Top"/>
    <Button Content="Status" DockPanel.Dock="Bottom"/>
    <Grid ShowGridLines="True">
        <Grid.ColumnDefinitions>
            <ColumnDefinition MinWidth="100" Width="1*"/>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition MinWidth="100" Width="2*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition MinHeight="100" Height="1*"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition MinHeight="100" Height="1*"/>
        </Grid.RowDefinitions>
        <Button Grid.Column="0" Grid.Row="0"  Content="Left Top"/>
        <GridSplitter Grid.Column="0" Grid.Row="1" Height="5" VerticalAlignment="Center" HorizontalAlignment="Stretch" />
        <Button Grid.Column="0" Grid.Row="2"  Content="Left Bottom"/>
        <GridSplitter Grid.Column="1" Width="5" Grid.RowSpan="3" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
        <Button Grid.Column="2" Grid.Row="0" Grid.RowSpan="3"  Content="Content"/>
    </Grid>
</DockPanel>

ツリービューを配置

1453 wpf layout02.jpg

  • TreeView を配置し、スプリットバー移動や、ツリーの展開で動的にスクロールバーが表示されるようにする
<DockPanel>
    <Button Content="Menu" DockPanel.Dock="Top"/>
    <Button Content="Status" DockPanel.Dock="Bottom"/>
    <Grid ShowGridLines="True">
        <Grid.ColumnDefinitions>
            <ColumnDefinition MinWidth="100" Width="1*"/>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition MinWidth="100" Width="2*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition MinHeight="100" Height="1*"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition MinHeight="100" Height="1*"/>
        </Grid.RowDefinitions>
        <TreeView Grid.Column="0" ItemsSource="{Binding TreeItems}">
            <TreeView.ItemTemplate>
                <HierarchicalDataTemplate DataType="{x:Type local:TreeEntity}" ItemsSource="{Binding Children}">
                    <TextBlock Text="{Binding Name}" />
                </HierarchicalDataTemplate>
            </TreeView.ItemTemplate>
        </TreeView>
        <GridSplitter Grid.Column="0" Grid.Row="1" Height="5" VerticalAlignment="Center" HorizontalAlignment="Stretch" />
        <Button Grid.Column="0" Grid.Row="2"  Content="Left Bottom"/>
        <GridSplitter Grid.Column="1" Width="5" Grid.RowSpan="3" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
        <Button Grid.Column="2" Grid.Row="0" Grid.RowSpan="3"  Content="{Binding Name}"/>
    </Grid>
</DockPanel>

ツリービューに対するコントロールボックスを追加

1454 wpf layout03.jpg

  • DocPanel により、ラベルとボタンをそれぞれ、左、右寄せ
  • コンテンツとしてテキストを可変サイズにする
<DockPanel>
    <Button Content="Menu" DockPanel.Dock="Top"/>
    <Button Content="Status" DockPanel.Dock="Bottom"/>
    <Grid ShowGridLines="False">
        <Grid.ColumnDefinitions>
            <ColumnDefinition MinWidth="100" Width="1*"/>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition MinWidth="100" Width="2*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition MinHeight="100" Height="1*"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition MinHeight="100" Height="1*"/>
        </Grid.RowDefinitions>
        <Grid Grid.Column="0" Grid.Row="0" ShowGridLines="False">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <DockPanel Grid.Row="0">
                <TextBlock Text="Search" Width="Auto" DockPanel.Dock="Left"/>
                <Button Content="Control" Width="Auto" DockPanel.Dock="Right"/>
                <TextBox />
            </DockPanel>
            <TreeView Grid.Row="1" ItemsSource="{Binding TreeItems}">
                <TreeView.ItemTemplate>
                    <HierarchicalDataTemplate DataType="{x:Type local:TreeEntity}" ItemsSource="{Binding Children}">
                        <TextBlock Text="{Binding Name}" />
                    </HierarchicalDataTemplate>
                </TreeView.ItemTemplate>
            </TreeView>
        </Grid>
        <GridSplitter Grid.Column="0" Grid.Row="1" Height="5" VerticalAlignment="Center" HorizontalAlignment="Stretch" />
        <Grid Grid.Column="0" Grid.Row="2" ShowGridLines="False">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <DockPanel Grid.Row="0">
                <TextBlock Text="Search" Width="Auto" DockPanel.Dock="Left"/>
                <Button Content="Control" Width="Auto" DockPanel.Dock="Right"/>
                <TextBox />
            </DockPanel>
            <TreeView Grid.Row="1" ItemsSource="{Binding TreeItems}">
                <TreeView.ItemTemplate>
                    <HierarchicalDataTemplate DataType="{x:Type local:TreeEntity}" ItemsSource="{Binding Children}">
                        <TextBlock Text="{Binding Name}" />
                    </HierarchicalDataTemplate>
                </TreeView.ItemTemplate>
            </TreeView>
        </Grid>
        <GridSplitter Grid.Column="1" Width="5" Grid.RowSpan="3" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
        <Button Grid.Column="2" Grid.Row="0" Grid.RowSpan="3"  Content="{Binding Name}"/>
    </Grid>
</DockPanel>

メニューとステータスバー追加

1455 wpf layout04.jpg

<DockPanel>
    <Menu DockPanel.Dock="Top" Height="Auto">
        <MenuItem Header="ファイル(_F)" />
        <MenuItem Header="編集(_E)" />
        <MenuItem Header="オプション(_O)">
            <MenuItem IsCheckable="True" Header="オプション1" />
            <MenuItem IsCheckable="True" Header="オプション2" />
            <MenuItem IsCheckable="True" Header="オプション3" />
        </MenuItem>
    </Menu>
    <StatusBar DockPanel.Dock="Bottom">
        <StatusBarItem Width="60" DockPanel.Dock="Right">Panel2</StatusBarItem>
        <Separator DockPanel.Dock="Right" />
        <StatusBarItem Width="60" DockPanel.Dock="Right">Panel3</StatusBarItem>
        <Separator DockPanel.Dock="Right" />
        <StatusBarItem>Panel1</StatusBarItem>
    </StatusBar>
    <Grid ShowGridLines="False">
        <Grid.ColumnDefinitions>
            <ColumnDefinition MinWidth="100" Width="1*"/>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition MinWidth="100" Width="2*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition MinHeight="100" Height="1*"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition MinHeight="100" Height="1*"/>
        </Grid.RowDefinitions>
        <Grid Grid.Column="0" Grid.Row="0" ShowGridLines="False">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <DockPanel Grid.Row="0">
                <TextBlock Text="Search" Width="Auto" DockPanel.Dock="Left"/>
                <Button Content="Control" Width="Auto" DockPanel.Dock="Right"/>
                <TextBox />
            </DockPanel>
            <TreeView Grid.Row="1" ItemsSource="{Binding TreeItems}">
                <TreeView.ItemTemplate>
                    <HierarchicalDataTemplate DataType="{x:Type local:TreeEntity}" ItemsSource="{Binding Children}">
                        <TextBlock Text="{Binding Name}" />
                    </HierarchicalDataTemplate>
                </TreeView.ItemTemplate>
            </TreeView>
        </Grid>
        <GridSplitter Grid.Column="0" Grid.Row="1" Height="5" VerticalAlignment="Center" HorizontalAlignment="Stretch" />
        <Grid Grid.Column="0" Grid.Row="2" ShowGridLines="False">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <DockPanel Grid.Row="0">
                <TextBlock Text="Search" Width="Auto" DockPanel.Dock="Left"/>
                <Button Content="Control" Width="Auto" DockPanel.Dock="Right"/>
                <TextBox />
            </DockPanel>
            <TreeView Grid.Row="1" ItemsSource="{Binding TreeItems}">
                <TreeView.ItemTemplate>
                    <HierarchicalDataTemplate DataType="{x:Type local:TreeEntity}" ItemsSource="{Binding Children}">
                        <TextBlock Text="{Binding Name}" />
                    </HierarchicalDataTemplate>
                </TreeView.ItemTemplate>
            </TreeView>
        </Grid>
        <GridSplitter Grid.Column="1" Width="5" Grid.RowSpan="3" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
        <Button Grid.Column="2" Grid.Row="0" Grid.RowSpan="3"  Content="{Binding Name}"/>
    </Grid>
</DockPanel>