0

私は C++ 開発者で、最近この素晴らしい WPF の世界に移行しました。私はWPFアプリケーションを開発しています。xaml ファイルにコンボボックス (BusRate) があります。

<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"
};

したがって、comboboxitemselected メソッドで次の操作を実行できます。

  • コンボボックスから SelectedId を取得し、整数変数に格納します。
  • この整数変数を渡します。デモンストレーションは次のとおりです。

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

私のアプリケーションでこれを達成するにはどうすればよいですか:)

4

1 に答える 1

1

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]);
于 2012-10-08T17:24:55.007 に答える