【问题标题】:How to load Combobox-items on dropdown如何在下拉列表中加载组合框项目
【发布时间】:2020-09-21 01:02:19
【问题描述】:


我需要使用 excel 工作簿和一些工作表。 要将可用的工作表加载到组合框中,我需要打开工作簿并遍历所有工作表并将它们添加到组合框中。这需要花费大量时间,用户需要等待。如果用户不想更改预加载的属性,那么这个时间就被浪费了。所以我只想在需要时填写列表项,但显示预选属性,该属性是在应用启动时从设置文件加载的。

那么有没有办法在下拉列表中加载项目?或者更好的是,如何绑定在下拉菜单中触发的命令以加载项目?

<ComboBox SelectedItem="{Binding Worksheet}" ItemsSource="{Binding WorkSheets}" x:Name="cbWorkSheet" Padding="4">

...哦,我知道如何将命令绑定到按钮,所以我需要组合框的特殊提示,而不是一般的命令:)

更新 我解决了触发“加载”并填充列表但我需要显示最后选择的值(在启动时作为绑定属性工作表加载)

<ComboBox 
    x:Name="cbWorkSheet" 
    SelectedItem="{Binding Worksheet}" 
    ItemsSource="{Binding WorkSheets}" 
    IsEditable="True"
    Padding="4">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="DropDownOpened" SourceObject="{Binding ElementName=cbWorkSheet}">
                <i:InvokeCommandAction Command="{Binding LoadBACnetWsCombobox}"/>
            </i:EventTrigger>
        </i:Interaction.Triggers>
</ComboBox>

使用该绑定,组合框保持为空,直到我将其下拉:(

【问题讨论】:

  • 能否贴出更新工作表属性的代码。
  • 嗯...也许我需要澄清这一点。我有该属性,该属性是在以前使用该应用程序时选择的。因此,如果用户不想更改此属性,则无需填写组合框的列表项。该属性绑定到组合框的 SelectedItem,因此它应该在启动时显示。如果用户想改变这个属性,他必须从组合框中选择另一个,现在是填充项目列表的点。

标签: wpf command dropdown


【解决方案1】:

原答案:不正确,2020/06/02 发布:

如果您需要在打开下拉列表之前填充 SelectedItem,那么您应该将 EventTrigger 的 EventName 从 DropDownOpened 更改为 Loaded

这样,在向用户显示组合框之前,LoadBACnetWsComboBox 将运行,并希望您的Worksheet 将被设置。然后,组合框将显示给用户。

修改后的答案,于 2020 年 6 月 3 日发布:

如果您只想填充初始显示的文本,您始终可以设置组合框的Text 属性。一旦您从下拉列表中进行选择,它将被覆盖。

<ComboBox
   ...
   Text="{Binding MyInitialValue}">

【讨论】:

  • 我想我解释得不对。所选属性是在应用程序启动时从设置文件加载的。它显示了最后一次使用的组合框的选择。所以我只想显示这个值,而不加载列表项,因为如果没有人想更改选择,加载大约需要 2 秒,这是浪费时间。所以我的目标是在空的组合框中显示一个值并在下拉时填充列表项。
猜你喜欢
  • 2012-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多