C# 如果动态添加组合框项目,但仅添加cbx';在XAML中设置时的宽度?

C# 如果动态添加组合框项目,但仅添加cbx';在XAML中设置时的宽度?,c#,windows,xaml,combobox,windows-phone,C#,Windows,Xaml,Combobox,Windows Phone,我只是不明白为什么,从技术上讲,其他地方没有设置额外的样式。如果我将它们添加到XAML文件中,我确实会看到下拉菜单,但除此之外,我动态填充的组合框在展开时会填满所有屏幕:( 我只是将数组中的资源设置为源 comboPredict.ItemsSource = predValues; comboPredict.SelectedIndex = 0; 所以在正确阅读之后 WPF组合框将自动设置为下拉列表中最宽的元素。组合框使用一个元素来保存列表 默认情况下,弹出窗口的大小与其内容相符

我只是不明白为什么,从技术上讲,其他地方没有设置额外的样式。如果我将它们添加到XAML文件中,我确实会看到下拉菜单,但除此之外,我动态填充的组合框在展开时会填满所有屏幕:(

我只是将数组中的资源设置为源

    comboPredict.ItemsSource = predValues;
    comboPredict.SelectedIndex = 0;

所以在正确阅读之后

WPF组合框将自动设置为下拉列表中最宽的元素。组合框使用一个元素来保存列表

默认情况下,弹出窗口的大小与其内容相符

在MSDN ComboBox.ItemSource中,您可以阅读:

设置ItemsSource属性后,Items集合将变为只读且大小固定

因此,它将在设置值后在弹出窗口上应用RenderTransform

在WPF的可视树中查看控件的父级也很重要


绕过1:明确设置宽度

如果更改字体大小或格式,或者不确定项目文本的长度,则会导致问题

解决方案2:

这不是“WPF方式”


为什么不在代码中只显示源代码(动态添加部分)。还需要一些隐藏格式功能?