【发布时间】:2009-04-28 19:03:20
【问题描述】:
我在 SL 页面上有两个组合框。当 Combo 1 更新时,会调用一个服务并填充 Combo 2。
第一次调用时,返回 3 个结果。当组合框展开时,您可以看到所有 3 个选项。
在第二次调用时,返回 4 个结果。当组合框展开时,您可以看到 3 个选项,带有一个垂直滚动条。
如果我重新加载并反向执行这些步骤,我会在第一次调用时得到 4 行,在第二次调用时得到 3 行 + 一个空白行。 (不,空白不是记录,不能选择。)
下拉列表大小似乎保持了第一个生成的高度。
如何刷新每次服务调用后显示的组合框最大项目数?
谢谢!
编辑#1
代码遵循 M-V-VM 模式。当页面加载时,Group1 填充第一个组合框,并且没有选择任何内容。当用户进行选择时,该选择将绑定到 Group1Selection。
<ComboBox ItemsSource="{Binding Path=Group1}" SelectedItem="{Binding Path=Group1Selection}" />
<ComboBox ItemsSource="{Binding Path=Group2}" SelectedItem="{Binding Path=Group2Selection}" />
在视图模型中,在 Group1Selection 属性的 set 访问器中,我有类似的东西
set
{
if (group1Selection != value)
{
group1Selection = value;
PopulateGroup2();
OnPropertyChanged("Group1Selection");
}
}
PopulateGroup2 在哪里异步执行我的服务调用,获取数据,并将该数据放入 Group2 的公开属性中。
在“正常”条件下,这不是问题,因为大多数选项都有数十种可能的选择。但是,Group1 的几个选项只有 3 或 4 个子选项。如果首先选择其中一个,则该应用程序实例的其余部分的 ComboBox 的高度分别设置为 3 或 4,而不是最多显示 8 个项目。
遵循 M-V-VM 模式,代码隐藏中没有代码。
【问题讨论】:
-
您是否在组合框 2 ItemsSource 中使用数据绑定? XAML 是什么样的?
-
如果不使用数据绑定,代码是什么样子的?
标签: silverlight combobox silverlight-2.0