0
foreach (TableContainer table in listOpenUnjoinedTables)
            {
                var item = new Label();

                item.MouseEnter += item_MouseEnter;
                item.MouseLeave += item_MouseLeave;

                if (table.IsVirtual == false)
                {
                    item.Content = "[" + table.TableDescription + "]";
                }
                else
                {
                    item.Content = "[" + table.View.Name + "]";
                }

                item.Tag = table;
                cmb.Items.Add(item);

                if (item.ActualWidth > largestWidth)
                {
                    largestWidth = item.ActualWidth;
                }
            }

            if (largestWidth != 0)
            {
                foreach (Label label in cmb.Items)
                {
                    label.Width = largestWidth;
                }
            }
        }

ComboBox があり、ComboBoxItems の代わりにラベルを追加しています。ラベルがドロップダウン リストのスペース全体を埋めるようにしたいと思います。上記のコードを作成しようとしていますが、ラベルの幅が常に 0 として返されるため、コードが機能しません。

どうすればこれを達成できますか? ComboBox の項目 (ラベル) でドロップダウン リストの幅全体を埋めたいと思います。

4

1 に答える 1

1

現実世界のアプリケーションでは、Label コントロールを ComboBox アイテムとして持つことはまったく意味がないと確信しています。

とにかく、ComboBox のItemContainerStyleプロパティに割り当てられた以下に示す最小限の Style は、項目の適切な水平方向の引き伸ばしを処理します。

<ComboBox Name="cmb">
    <ComboBox.ItemContainerStyle>
        <Style TargetType="ComboBoxItem">
            <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
        </Style>
    </ComboBox.ItemContainerStyle>
</ComboBox>
于 2013-03-20T21:59:34.630 に答える