1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Visual Studio | WPF > 実装: デザイン時と実行時のウィンドウサイズの違いの対策 > XAML対応

Last updated at Posted at 2017-12-07
動作環境
Windows 8.1 Pro (64bit)
Microsoft Visual Studio 2017 Community
Sublime Text 2

関連

WPF特有の問題なのか、デザイン時と実行時にウィンドウサイズが異なる。
一方で、コントロールの配置は保持されるようで、コントロール右と下のマージンがおかしくなったソフトになる。

対策

Visual Studio | WPF > SizeToContent="WidthAndHeight" > 内容に応じてウィンドウサイズを変更してくれる
を使う。

XAMLで以下のように記載する。

  1. Gridの中にGridを作る

    • 元にあるGridと同じデザイン時のサイズにするが、
    • GUIで元のGridと同じサイズにするとWidthとHeight属性の表記が消失するため手入力する。
    • デザイン時のサイズに合うように目視しながらWidthとHeightの値を決める
      • 適当なサイズのGridを配置した上で、表示されるマージン値を参考に再度サイズを手入力してもよい
  2. コントロールを配置していく

コード例

MainWindow.xaml
<Window x:Class="_171207_t0936_controlLocation.MainWindow"
        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:_171207_t0936_controlLocation"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525"
        SizeToContent="WidthAndHeight">
    <Grid>
        <!-- 実行時とデザイン時のウィンドウサイズの違い回避のため、-->
        <!-- SizeToContent=WidthAndHeightと合わせて -->
        <!-- 下記のGrid内でコントロールを配置すること -->
        <Grid Height="320" Width="515" Margin="0,0,0,0">
            <Button Content="Button" HorizontalAlignment="Left" 
                    Margin="430,10,0,0" VerticalAlignment="Top" Width="75"/>
        </Grid>
    </Grid>
</Window>

デザイン時

qiita.png

実行時

qiita.png

備考

日々様々なデザイン資料を作っているような人たちはピクセル単位での違和感を感じるかもしれない。

その他、多くのユーザに対しては違和感は少ないだろう。

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?