BooleanToVisibilityConverter.cs

//---------------------------------------------------------------------------- 
//
// Copyright (C) Microsoft Corporation.  All rights reserved.
//
//--------------------------------------------------------------------------- 

using System; 
using System.ComponentModel; 
using System.Windows;
using System.Windows.Media; 
using System.Windows.Data;
using System.Globalization;
using System.Collections.Generic;
 
using MS.Internal.Controls;
 
 
namespace System.Windows.Controls
{ 
    /// <summary>
    /// Convert between boolean and visibility
    /// </summary>
    [Localizability(LocalizationCategory.NeverLocalize)] 
    public sealed class BooleanToVisibilityConverter : IValueConverter
    { 
        /// <summary> 
        /// Convert bool or Nullable&lt;bool&gt; to Visibility
        /// </summary> 
        /// <param name="value">bool or Nullable&lt;bool&gt;</param>
        /// <param name="targetType">Visibility</param>
        /// <param name="parameter">null</param>
        /// <param name="culture">null</param> 
        /// <returns>Visible or Collapsed</returns>
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
        { 
            bool bValue = false;
            if (value is bool) 
            {
                bValue = (bool)value;
            }
            else if (value is Nullable<bool>) 
            {
                Nullable<bool> tmp = (Nullable<bool>)value; 
                bValue = tmp.HasValue ? tmp.Value : false; 
            }
            return (bValue) ? Visibility.Visible : Visibility.Collapsed; 
        }

        /// <summary>
        /// Convert Visibility to boolean 
        /// </summary>
        /// <param name="value"></param> 
        /// <param name="targetType"></param> 
        /// <param name="parameter"></param>
        /// <param name="culture"></param> 
        /// <returns></returns>
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value is Visibility) 
            {
                return (Visibility)value == Visibility.Visible; 
            } 
            else
            { 
                return false;
            }
        }
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.

Ref: http://www.projky.com/dotnet/3.0/System/Windows/Controls/BooleanToVisibilityConverter.cs.html

下载地址:http://www.projky.com/dotnet/3.0/System/Windows/Controls/BooleanToVisibilityConverter.cs

posted @ 2015-01-31 00:50  陈意  阅读(424)  评论(0编辑  收藏  举报