微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Silverlight 4:如何切换控件可见性

我在我的Silverlight应用程序中使用MVVM.当需要通过数据管理控件可见性时,我将其“可见性”属性连接到对象的相应属性

XAML:

<TextBlock Text="Price" Visibility="{Binding PriceVisibility,Mode=OneWay}"/>
<TextBox Text="{Binding TicketPrice,Mode=TwoWay}" Visibility="{Binding PriceVisibility,Mode=OneWay}"/>

CodeBehind(C#):

public string PriceVisibility { get { return PriceVisible ? "Visible" : "Collapsed"; } }

但是从我的角度来看,返回Visibility属性的字符串表示并不是最好的方法.

你能告诉我有没有更好的方法

谢谢!

解决方法

我只是使用Reflector来检查PresentationFramework.dll中的类型转换器

已经有一个可以在布尔和可见性之间进行转换的实现.您应该可以在Silverlight应用程序中使用它.

public sealed class BooleanToVisibilityConverter : IValueConverter
{
    public object Convert(object value,Type targettype,object parameter,CultureInfo culture)
    {
        bool flag = false;
        if (value is bool)
        {
            flag = (bool) value;
        }
        else if (value is bool?)
        {
            bool? nullable = (bool?) value;
            flag = nullable.HasValue ? nullable.Value : false;
        }
        return (flag ? Visibility.Visible : Visibility.Collapsed);
    }

    public object ConvertBack(object value,CultureInfo culture)
    {
        return ((value is Visibility) && (((Visibility) value) == Visibility.Visible));
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐