2

网上有很多关于此问题的帖子,其中 ComboBox 仅更改其下拉高度以适应其第一个下拉列表中的项目。对所示项目的任何更改都不会导致下拉菜单调整大小。我发现的各种解决方法似乎对我不起作用,所以我想知道是否有人找到了解决这个问题的方法。

我当前的选择是使用 MinHeight 并将其设置为合理的大小(如果我设置 MinHeight 和 MaxHeight,我会遇到与设置 Height 相同的问题 - 当项目超出范围时没有滚动条。

我试过改变物品的容器,但似乎它们都有这个问题。有任何想法吗?

请注意,每当我按照几个论坛的指示更改 ItemsSource 时,我也尝试以编程方式重新创建组合,但我无法让它在不崩溃的情况下工作。

4

2 回答 2

2

“添加和删除”方法对我有用。这就是我要做的(如果你做的事情略有不同,或者其他人想尝试这种方法):


  • 读取并在本地存储您感兴趣的所有属性
  • 从可视化树中移除组合框
  • 将变量设置为空
  • 创建一个新的组合框
  • 恢复您在上面存储的属性
  • 带走你最先想到的数字
  • 将其添加回可视化树

例如:

string lName = lComboBox.Name;
DataTemplate lTemplate = lComboBox.ItemTemplate;
Thickness lMargin = lComboBox.Margin;
// Other properties

LayoutParent.Children.Remove(lComboBox);

lComboBox= null;
lComboBox= new ComboBox(){
    Name = lName,
    ItemTemplate = lTemplate,
    Margin = lMargin,
    ItemsSource = lList // Your datasource
};

LayoutParent.Children.Add(lComboBox);
于 2009-02-05T15:12:59.843 回答
1

多亏了这个答案,我找到了一个很好的解决方案。它工作得很好,不像其他建议那么老套(虽然有效)。

显然,社区 wiki-ing 这篇文章,因为这不是我的答案。请为真正的答案投票,markti值得为此获得双重代表。

于 2009-07-10T13:47:27.580 回答