2014-10-27 6 views
2

У меня есть ComboBox в моем приложении WPF, где я показываю список элементов. В большинстве случаев первый элемент является правильным выбором в списке itemssource, только иногда по личным запросам элемент может быть изменен. Теперь мой комбинированный блок загружает список, но никогда не отображает первый элемент в выбранном элементе. Может кто-нибудь мне помочь. вот мой код.wpf combobox default selection from 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, Избранные Itme HASA значение тоже, но никогда не будет отображаться на экране.

Любая помощь приветствуется.

+1

Не дубликат, а связанный с этим: http: //stackoverflow.com/questions/4902039/difference-between-selecteditem-selectedvalue-and-selectedvaluepath. Я лично был бы осторожным смешиванием 'SelectedValue' и' SelectedItem' – BradleyDotNET

+1

Почему вы установка 'SelectedIndex' в одном месте, а' SelectedItem' в другом? Кроме того, вы устанавливаете значения, относящиеся к 'SelectedValue' в вашем Xaml, но вы устанавливаете' SelectedItem' в свой код позади. Выберите один механизм выбора и придерживайтесь его. Неудивительно, что у вас возникают проблемы, когда вы смешиваете все три. –

+0

Я пробовал две разные вещи, но ничего не работает в моем случае. Даже если у меня нет SelectedItem, combobox не отображает значение. –

ответ

2

Как я обычно делаю это, сохраняя ссылку на текущий выбранный элемент в ViewModel. (Вероятно, вы все равно должны это делать, учитывая, что вам не следует запрашивать сам объект пользовательского интерфейса, чтобы определить его выбор.) Инициализируйте YourSelectedItem к элементу, который вы хотите отобразить как выбранный.

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

Затем привяжите SelectedItem к свойству YourItems.

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

В любое время пользователь изменяет свой выбор в ComboBox, свойство YourSelectedItem автоматически будет доведена до даты.

Вам не нужно использовать ничего, кроме SelectedItem.

+0

Отлично, это сработало .... спасибо за быстрый ответ. Выбрал SelectedValue и использовал SelectedItem вместо этого, теперь он появляется. –

+0

Отлично! Спасибо, что приняли ответ. – furkle