我的WPF应用程序中有一个ComboBox,用于显示项目列表。大多数情况下,第一项是itemssource列表中的正确选择,有时仅在个人请求时可以更改项目。现在我的组合框加载列表但从未显示所选项目的第一个项目。请有人帮帮我。这是我的代码。
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也有值,但从不在屏幕上显示。
感谢任何帮助。
答案 0 :(得分:2)
我通常这样做的方法是保持对ViewModel中当前所选项的引用。 (无论如何,您应该这样做,因为您不应该查询UI对象本身以找出用户的选择。)将YourSelectedItem初始化为您希望显示为已选中的项目。
public List<YourType> YourItems { get; set; }
public YourType SelectedItem = YourItems[index];
然后将SelectedItem绑定到YourItems属性。
<ComboBox ... SelectedItem={Binding YourSelectedItem, Mode=TwoWay} ... />
每当用户在ComboBox中更改其选择时,YourSelectedItem属性将自动更新。
您不需要使用SelectedItem以外的任何其他内容。