绑定文本框IsEnabled同时对两个不同的Radiobutton

时间:2012-11-03 08:17:43

标签: c# wpf isenabled

我的UI(WPF)中有三个Radiobuttons。 通过选择其中两个,我想启用一个Textbox。通过选择第三个,应禁用文本框。 我应该使用Multibinding吗?如果是,如何?

1 个答案:

答案 0 :(得分:0)

为什么不将IsEnabled设置为“未检查” - 第三个RadioButton的状态?通常,一组radiobutton是独有的,因为一次只能检查一个。

<StackPanel>
    <StackPanel.Resources>
        <convert:InvertBooleanConverter x:Key="InvertConverter" />
    </StackPanel.Resources>
    <TextBox IsEnabled="{Binding IsChecked, ElementName=radio, Converter={StaticResource InvertConverter}}" />
    <RadioButton x:Name="radio" IsChecked="True"/>
</StackPanel>

使用自定义转换器

using System;
using System.Globalization;
using System.Windows;
using System.Windows.Data;

namespace MyApplication.Converters {
    public sealed class InvertBooleanConverter : IValueConverter {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
            return !(bool)value;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
            return DependencyProperty.UnsetValue;
        }
    }
}