我有一组三个单选按钮.根据选择的单选按钮,我想删除三个控件之一 – 文本框,下拉列表或按钮.如何根据所选单选按钮的结果显示控件?
解决方法
您可以使用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 }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。