.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> 编辑:
我不了解其他设计师(例如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 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |