WPF MVVM Радиокнопки в ItemsControl

Я раньше связывал перечисления с переключателями, и в целом я понимаю, как это работает. Я использовал альтернативную реализацию из этого вопроса: Как привязать RadioButtons к перечислению?

Вместо перечислений я хотел бы сгенерировать перечисляемый во время выполнения набор настраиваемого типа и представить их как набор радио кнопки. Я получил представление, работающее с перечисляемым во время выполнения набором с ListView , привязкой к свойствам ItemsSource и SelectedItem , поэтому моя модель ViewModel ] подключен правильно. Теперь я пытаюсь переключиться с ListView на ItemsControl с помощью переключателей.

Вот насколько я понял:

<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 имеет ту же реализацию, что и EnumToBooleanConverter из другого вопроса. Это кажется правильным, поскольку кажется, что он просто вызывает метод Equals :

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

Проблема, с которой я столкнулся сейчас, заключается в том, что я не могу понять, как отправить значение времени выполнения как ConverterParameter . При попытке (с помощью приведенного выше кода) я получаю следующую ошибку:

«Связывание» не может быть установлено для свойства «ConverterParameter» типа «Binding». «Привязка» может быть установлена ​​только для свойства DependencyProperty объекта DependencyObject.

Есть ли способ привязать к экземпляру элемента и передать его IValueConverter ?

22
задан Community 23 May 2017 в 12:02
поделиться