WPF MVVM Optionsfelder auf ItemsControl

Habe ich gebunden enums des radio-buttons vor, und ich in der Regel verstehen, wie es funktioniert. Ich benutzte die Alternative Implementierung aus dieser Frage: Wie binden RadioButtons zu enum?

Statt Aufzählungen, würde ich gerne erzeugen einen Laufzeit-aufgezählt festlegen eines benutzerdefinierten Typs und präsentieren diese als Gruppe von radio-buttons. Ich habe eine view, die gegen eine Laufzeit-aufgezählt mit einem ListViewdie Bindung an den ItemsSource und SelectedItem Eigenschaften, so meine ViewModel richtig angeschlossen ist. Jetzt versuche ich, den Wechsel von einer ListView zu einem ItemsControl mit radio-buttons.

Hier ist so weit, wie ich bekommen habe:

<Window.Resources>
    <vm:InstanceToBooleanConverter x:Key="InstanceToBooleanConverter" />
</Window.Resources>

<!-- ... -->

<ItemsControl ItemsSource="{Binding ItemSelections}">
    <ItemsControl.ItemTemplate>
        <DataTemplate DataType="{x:Type vm:ISomeType}">
            <RadioButton Content="{Binding Name}"
                         IsChecked="{Binding Path=SelectedItem, Converter={StaticResource InstanceToBooleanConverter}, ConverterParameter={Binding}}"
                         Grid.Column="0" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

InstanceToBooleanConverter hat die gleiche Umsetzung wie EnumToBooleanConverter aus, die andere Frage. Dies scheint in Ordnung, da es wie es scheint, nur startet das Equals Methode:

public class InstanceToBooleanConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return value.Equals(parameter);
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return value.Equals(true) ? parameter : Binding.DoNothing;
    }
}

Das problem, das ich erhalte ist jetzt, dass ich kann nicht herausfinden, wie das senden einer Laufzeit Wert als die ConverterParameter. Wenn ich versuche (mit dem code oben), bekomme ich diesen Fehler:

'Verbindlich' wurde nicht gesetzt auf 'ConverterParameter' - Eigenschaft mit dem Typ "Verbindlich". Eine 'Bindung' kann nur gesetzt werden, auf eine DependencyProperty eines DependencyObject.

Gibt es eine Möglichkeit, zu binden, um die Element-Instanz, und übergeben es an die IValueConverter?

InformationsquelleAutor der Frage Merlyn Morgan-Graham | 2011-05-05

Schreibe einen Kommentar