備忘録

備忘録

WPFでGridを使いコントロールの位置を動的に変更する方法

Ⅰ. はじめに

タイトルの通り「WPFでGridを使いコントロールの位置を動的に変更する方法」です。

Ⅱ. サンプルプログラム

MainWindow.xaml
<Grid Name="grid1" ShowGridLines="True">
  <Grid.RowDefinitions>
    <RowDefinition Height="1*" MaxHeight="80"/>
    <RowDefinition Height="3*" />
  </Grid.RowDefinitions>
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="1*" />
    <ColumnDefinition Width="1*" />
  </Grid.ColumnDefinitions>
  
  <Button Name="button1" Content="button1" Grid.Row="0" Grid.Column="0"></Button>
  <Button Name="button2" Content="button2" Grid.Row="0" Grid.Column="1"></Button>
  <Button Name="button3" Content="button3" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2"></Button>
</Grid>

f:id:kagasu:20180211150209p:plain

MainWindow.xaml.cs
public MainWindow()
{
  InitializeComponent();

  // button1とbutton2の位置を入れ替える
  Grid.SetColumn(button1, 1);
  Grid.SetColumn(button2, 0);

  // 新しいコントロールを追加する
  var button4 = new Button();
  button4.Content = "button4";
  Grid.SetRow(button4, 1);
  Grid.SetColumn(button4, 0);
  Grid.SetColumnSpan(button4, 2);
  Grid.SetRowSpan(button4, 1);
  grid1.Children.Add(button4);
}

Ⅲ. 実行結果

f:id:kagasu:20180211150626p:plain

参考