wpf组合框显示itemsource中的默认选择

本文关键字:默认 选择 itemsource 组合 显示 wpf | 更新日期: 2023-09-27 18:28:05

我的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中有值,Selected itme也有值,但永远不会显示在屏幕上。

感谢您的帮助。

wpf组合框显示itemsource中的默认选择

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

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

然后将SelectedItem绑定到YourItems属性。

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

每当用户更改组合框中的选择时,YourSelectedItem属性将自动更新。

您不需要使用SelectedItem以外的任何其他内容。

对于仍需要此功能的人,您可以将SelectedIndex与要显示在组合框上的索引放在一起:

<ComboBox ... SelectedIndex="0" ... />