如何在C#中根据数值隐藏单选按钮?
解决根据数值隐藏单选按钮的问题
你的后台代码写法有误——在WPF/UWP这类XAML框架里,控件的Visibility属性是**Visibility枚举类型**,不能直接赋值布尔值false或者字符串"Hidden",这就是代码不生效的原因。
直接操作控件的正确写法
先确认代码里引用了对应的命名空间(一般项目默认已引用),然后使用枚举值赋值:
if(ArbeitsplatzId == 400) { // 隐藏控件但保留原布局空间 RbAmWartung.Visibility = System.Windows.Visibility.Hidden; // 若希望控件完全不占布局空间,改用下面这句 // RbAmWartung.Visibility = System.Windows.Visibility.Collapsed; }
Hidden和Collapsed的区别:前者只是让控件不可见,布局里仍会留着它的位置;后者会让控件彻底从布局中消失,不占用任何空间,按需选择即可。
更优雅的MVVM绑定方式(推荐)
如果你的项目用了MVVM模式,建议用数据绑定+转换器的方式实现,不用直接操作控件实例,更符合架构设计:
- 先定义一个转换器类,把数值转换成对应的
Visibility枚举:
public class IdToVisibilityConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value is int id && id == 400) { return Visibility.Hidden; } return Visibility.Visible; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } }
- 在XAML里引用这个转换器,把单选按钮的
Visibility绑定到你的数值属性:
<Window.Resources> <local:IdToVisibilityConverter x:Key="IdToVisibilityConverter"/> </Window.Resources> <RadioButton x:Name="RbAmWartung" Visibility="{Binding ArbeitsplatzId, Converter={StaticResource IdToVisibilityConverter}}"/>
内容的提问来源于stack exchange,提问作者user20202784
相关产品推荐
相关产品推荐

