c # — хранить элементы Combobox в форме массива и извлекать SelectedId в WPF

Я разработчик на C ++ и недавно перешел в этот удивительный мир WPF. Я разрабатываю приложение WPF. У меня есть поле со списком (BusRate) в моем файле xaml.

<ComboBox Height="23" ItemsSource="{Binding BusRateList}" SelectedIndex="2" Name="comboBox2" Width="85" />

Мой класс Viewmodel имеет следующее свойство:

public ObservableCollection<int> _busRate = new ObservableCollection<int>();
public ObservableCollection<int> BusRateList
{
get { return _busRate; }
set
{
_busRate = value;
NotifyPropertyChanged("BusRateList");
}
}

И я добавляю пункты следующим образом:

_busRate.Add(10);
_busRate.Add(50);
_busRate.Add(100);
_busRate.Add(200);
_busRate.Add(300);
_busRate.Add(400);
_busRate.Add(500);
_busRate.Add(600);

Это дает мне предметы в моем поле со списком. Но я хочу добавить эти элементы в свой выпадающий список в виде массива, который содержит все эти значения. Например.:

// C++ Code
static const char *busRate[8] =
{
" 10", " 50", "100", "200", "300", "400", "500", "600"};

Таким образом, позволяя мне выполнить следующую операцию над выбранным методом:

  • Получите SelectedId из Combobox и сохраните его в целочисленной переменной.
  • передать это целое число varaible. Демонстрация следующим образом:

    int id = comboBox->getSelectedId(); // C++ Code
    unsigned long speed = String(busRate[id-1]).getIntValue(); // C++ Code
    

Как я могу добиться этого в моем приложении 🙂

0

Решение

Вы можете создать новое свойство в вашей ViewModel типа int и конвертер который преобразует строку в значение типа int. Теперь вы привязываете новое свойство к свойству ComboBox.SelectedItem:

<Window/UserControl/....Resouces>
<local:YourConverter x:Key="TheConverter"/>
<Window/UserControl/....Resouces>

<ComboBox SelectedIten="{Binding Path=IntProp, Converter={StaticResource TheConverter}}"

РЕДАКТИРОВАТЬ:

int id = Convert.ToInt32(BusRateList[comboBox.SelectedIndex]);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]