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的项目(标签)填充整个下拉列表的宽度。
答案 0 :(得分:1)
我敢肯定,在现实世界的应用程序中,将Label控件作为ComboBox项目完全没有任何意义。
无论如何,分配给ComboBox的ItemContainerStyle属性的下面显示的最小样式将负责项目的正确水平拉伸。
<ComboBox Name="cmb">
<ComboBox.ItemContainerStyle>
<Style TargetType="ComboBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ComboBox.ItemContainerStyle>
</ComboBox>