より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

WPFでコンボボックスの項目テキストを中心に

以下のようにレイアウトの都合上、コンボボックスの項目文字列を中央揃えにしたい場合のお話です。

f:id:rimever:20190801221953p:plain

そんなの簡単じゃないか。HorizontalAlignment="Center"を使えばいいじゃないか。

Labelと一緒だと私は思ってました。

違います。

HorizontalContentAlignment="Center"とする必要があります。

ComboBoxの場合のHorizontalAlignmentについては、コンボボックス自体、つまり箱に対するAlignment(寄せ、揃え)を設定する扱いのようです。

UIの調整って奥が深いですね。

<Window x:Class="WpfApp1.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:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Label  Content="Label" Margin="30,10,650,370" HorizontalAlignment="Center" />
        <ComboBox Name="ComboBox" Margin="150,10,495,380.5" HorizontalContentAlignment="Center"/>

    </Grid>
</Window>

stackoverflow.com