当前位置: 首页 > 知识库问答 >
问题:

wpf combobox从itemsSource默认选择

施弘壮
2023-03-14

我的WPF应用程序中有一个ComboBox,我在其中显示项目列表。大多数情况下,第一个项目是项目资源列表中的正确选择,只有在个人请求时,才能更改项目。现在,“我的”组合框加载列表,但从不显示所选项目的第一个项目。有人能帮我吗。这是我的代码

XAML:

<ComboBox Name="cbxShipTo" TabIndex="0" IsTextSearchEnabled="True" ToolTip="Ship To is a Required Field" MinWidth="200" SelectedIndex="0" IsSynchronizedWithCurrentItem="True" 
IsEditable="False" DisplayMemberPath="ShipToCountyState" SelectedValuePath="ShipToValue">
<ComboBox.SelectedValue>
    <Binding Path="ShipToQAD" Mode="TwoWay">
        <Binding.ValidationRules>
            <common:RequiredValidationRule ErrorMessage="Ship To is a Required Field" />
            <ExceptionValidationRule></ExceptionValidationRule>
        </Binding.ValidationRules>
    </Binding>
</ComboBox.SelectedValue>

代码隐藏:

cbxShipTo.ItemsSource = dbLookupService.GetShipToByCustomer(_inspectionListItems[0].CompanyID);
cbxShipTo.SelectedItem = cbxShipTo.Items.GetItemAt(0);

我在 itemsSource 中有值,已选择的 itme 也有一个值,但永远不会显示在屏幕上。

感谢任何帮助。

共有1个答案

闾丘坚诚
2023-03-14

我通常这样做的方法是在 ViewModel 中保留对当前选定项的引用。(无论如何,您可能都应该这样做,因为您不应该查询 UI 对象本身来找出用户的选择。将“您的选定项”初始化为您希望显示为已选中项的项目。

public List<YourType> YourItems { get; set; }
public YourType SelectedItem = YourItems[index];

然后将SelectedItem绑定到YourItems属性。

<ComboBox ... SelectedItem={Binding YourSelectedItem, Mode=TwoWay} ... />

每当用户在组合框中更改其选择时,您的选定项属性将自动保持最新。

您不应该需要使用除选择项目之外的任何其他东西。

 类似资料:
  • 问题内容: 我有一个很奇怪的要求,其中要求我默认在HTML的下拉菜单中没有选择任何选项。然而, 我不能用这个 因为,为此,我将必须进行验证以处理第一个选项。有人可以在没有将第一个选项作为select标签的一部分的情况下帮助我实现此目标吗? 问题答案: 也许这会有所帮助 将默认显示。但是,如果您选择一个选项,则将无法再次选择它。 您也可以通过添加一个空白来隐藏它 因此它将不再显示在列表中。 选项2

  • 问题内容: 我正在研究适用于Python的matplotlib库。我开始理解它的一些基本复杂性,因为pylab和pyplot之间的区别,并且我正在尝试复制和修改图库中的一些示例。 我仍然不清楚的一件事是配置文件matplotlibrc的实际作用。 目前,我使用Windows 7下的WinPython 3.3.5.0 64位分发版。.matplotlibrc文件位于WinPython-64bit-3

  • 问题内容: 我有一个具有日期时间字段的模型: 当我在内置的django admin中检查该应用程序时,还会附加时间,因此,如果你尝试保存它,则会返回错误。如何设置默认的日期呢?(也不起作用) 问题答案: 这就是为什么你应该始终导入基本模块:而不是该模块中的类的原因f。 你犯的另一个错误是使用实际调用默认的函数。这意味着所有模型都将在首次定义类时获得日期-因此,如果你的服务器在不重新启动Apache

  • 我需要一些帮助,我不知道如何解决这个问题。 当我设置适配器时,我需要默认选择几个复选框,但我不能这样做。为什么?我认为问题是CheckableRelativeLayout。我使用RelativeLayout的这个变体,因为我需要单击行并选择复选框。 当我使用RelativeLayout的这个变体时,列表中的所有复选框都未选中。如果您在最后看到我的日志,当选中复选框时会触发事件“onCheckedC

  • 问题内容: 我似乎找不到或编写一个选择默认值的sqlquery (我不认为我可以在phpmyadmin中生成它供我复制) 我试图选择它,就好像它是一条记录,但无济于事… 问题答案: 或者我认为更好: 更新-更正 正如@Jeff Caron所指出的,只有在中至少有1行时,上述内容才有效。如果即使分组表没有行也要得到结果,则可以使用以下命令: