WPF ComboBox: statische Liste von ComboBoxItems, aber datengebundenes SelectedItem?

In meiner WPF-Anwendung habe ich eine ComboBox, die mit einer statischen Liste von ComboBoxItems gefüllt ist, da sich deren Inhalt niemals ändert. Da ich das SelectedItem jedoch an mein zugrunde liegendes ViewModel binden möchte, soll jedem ComboBoxItem auch ein separater Wert zugewiesen werden, der meiner ViewModel-Eigenschaft zugewiesen wird. Und ich habe ein bisschen Mühe, das zum Laufen zu bringen.

Meine ComboBox-Deklaration sieht folgendermaßen aus:

    <ComboBox Height="23" HorizontalAlignment="Stretch" Margin="2" Name="comboBox1" VerticalAlignment="Top"
              SelectedItem="{Binding Path=Amount, Mode=TwoWay}" SelectedValuePath="Tag" >
        <ComboBoxItem Content="None" Tag="0" />
        <ComboBoxItem Content="Few" Tag="1" />
        <ComboBoxItem Content="Some" Tag="2" />
        <ComboBoxItem Content="Enough" Tag="3" />
        <ComboBoxItem Content="Lots" Tag="4" />
        <ComboBoxItem Content="Too much" Tag="5" />
    </ComboBox>

Das SelectedItem dieser ComboBox ist an die Amount-Eigenschaft von ViewModel gebunden, die als Ganzzahl deklariert ist:

public class MyViewModel : INotifyPropertyChanged
{
    private int _amount = 3;

    public int Amount
    {
        get { return _amount; }
        set
        {
            _amount = value;
            OnPropertyChanged("Amount");
        }
    }

    //...
}

Ich hatte gehofft, dass SelectedValuePath = "Tag" WPF mitteilen würde, dass es den Tag-Wert zum Binden an die ViewModel-Amount-Eigenschaft verwenden sollte. Wenn ich diese Anwendung ausführe und das ausgewählte Element der ComboBox ändere, teilt mir der Debug-Trace Folgendes mit:

System.Windows.Data Error: 23 : Cannot convert 'System.Windows.Controls.ComboBoxItem: Some' from type 'ComboBoxItem' to type 'System.Int32' for 'en-US' culture ...
System.Windows.Data Error: 7 : ConvertBack cannot convert value 'System.Windows.Controls.ComboBoxItem: Some' (type 'ComboBoxItem'). (...) System.NotSupportedException: Int32Converter cannot convert from System.Windows.Controls.ComboBoxItem.

Anscheinend versucht es, das gesamte ComboBoxItem an mein ViewModel zu binden, nicht nur seinen Tag-Wert. Was mache ich falsch?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage