加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

.net – 根据所选的单选按钮显示控件

发布时间:2020-12-17 07:26:12 所属栏目:百科 来源:网络整理
导读:我有一组三个单选按钮.根据选择的单选按钮,我想删除三个控件之一 – 文本框,下拉列表或按钮.如何根据所选单选按钮的结果显示控件? 解决方法 您可以使用BooleanToVisibilityConverter将控件的可见性绑定到RadioButton的IsChecked属性: Page xmlns="http://s
我有一组三个单选按钮.根据选择的单选按钮,我想删除三个控件之一 – 文本框,下拉列表或按钮.如何根据所选单选按钮的结果显示控件?

解决方法

您可以使用BooleanToVisibilityConverter将控件的可见性绑定到RadioButton的IsChecked属性:

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Page.Resources>
    <BooleanToVisibilityConverter x:Key="convVisibility"/>
  </Page.Resources>
  <Grid>
    <StackPanel Orientation="Vertical">
      <RadioButton Name="radioButton1" GroupName="group1">Control1</RadioButton>
      <RadioButton Name="radioButton2" GroupName="group1">Control2</RadioButton>
      <RadioButton Name="radioButton3" GroupName="group1">Control3</RadioButton>
      <Grid>
        <Button Visibility="{Binding IsChecked,ElementName=radioButton1,Converter={StaticResource convVisibility}}">1. Button</Button>
        <TextBlock Visibility="{Binding IsChecked,ElementName=radioButton2,Converter={StaticResource convVisibility}}">2. TextBlock</TextBlock>
        <TextBox Visibility="{Binding IsChecked,ElementName=radioButton3,Converter={StaticResource convVisibility}}">3. TextBox</TextBox>
      </Grid>
    </StackPanel>
  </Grid>
</Page>

编辑:

That solutions works great and it’s simple to implement. Is there anyway I can prevent the controls from being hidden in design mode?

我不了解其他设计师(例如Blend),但在Visual Studio设计器中,控件永远不会被隐藏……

无论如何,你可以实现自己的转换器,它总是在设计模式下返回Visible.由于某些不明原因,BooleanToVisibilityConverter类是密封的,因此您无法继承它.如果您不想重写转换逻辑,则可以将转换委派给BooleanToVisibilityConverter:

public class MyBooleanToVisibilityConverter : IValueConverter
{
    private BooleanToVisibilityConverter _converter = new BooleanToVisibilityConverter();
    private DependencyObject _dummy = new DependencyObject();

    private bool DesignMode
    {
        get
        {
            return DesignerProperties.GetIsInDesignMode(_dummy);
        }
    }

    #region IValueConverter Members

    public object Convert(object value,Type targetType,object parameter,System.Globalization.CultureInfo culture)
    {
        if (DesignMode)
            return Visibility.Visible;
        else
            return _converter.Convert(value,targetType,parameter,culture);
    }

    public object ConvertBack(object value,System.Globalization.CultureInfo culture)
    {
        return _converter.ConvertBack(value,culture);
    }

    #endregion
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读