首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ItemsControl上的WPF MVVM单选按钮

ItemsControl上的WPF MVVM单选按钮
EN

Stack Overflow用户
提问于 2011-05-05 10:08:43
回答 4查看 20.9K关注 0票数 22

我以前将枚举绑定到单选按钮,我大致了解它是如何工作的。我使用了这个问题中的替代实现:How to bind RadioButtons to an enum?

我想生成一个自定义类型的运行时枚举集,并将它们表示为一组单选按钮,而不是枚举。我已经获得了一个视图,该视图针对一个运行时枚举集使用ListView,绑定到ItemsSourceSelectedItem属性,因此我的ViewModel被正确地连接起来。现在,我正尝试从ListView切换到带单选按钮的ItemsControl

这就是我所得到的:

代码语言:javascript
复制
<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>

在另一个问题中,InstanceToBooleanConverterEnumToBooleanConverter具有相同的实现。这似乎是对的,因为它似乎只是调用了Equals方法:

代码语言:javascript
复制
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发送。当我尝试(使用上面的代码)时,我得到这个错误:

Binding A‘

’不能在类型为'Binding‘的'ConverterParameter’属性上设置。只能在DependencyObject的DependencyProperty上设置“Binding”。

是否有一种方法可以绑定到item实例,并将其传递给IValueConverter

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5891924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档