C# 如何实现BooltVisibilityConverter

C# 如何实现BooltVisibilityConverter,c#,xaml,windows-phone-7,windows-phone-8,converter,C#,Xaml,Windows Phone 7,Windows Phone 8,Converter,在我的应用程序中,我想切换StackPanel中项目的可见性。我的Stackpanel包含一个图像和一个文本块。如何正确使用BooltVisibilityConverter切换文本块的可见性,并保存此设置以使用户受益 目前我有如下内容,尽管我有一些错误。重要提示,我需要使用ApplicationBar菜单项作为驱动文本框可见性切换的click事件 编辑 尽管文本块的可见性没有改变,但错误不再发生 XAML BooleanToVisibilityConverter的一个类 //Error on B

在我的应用程序中,我想切换StackPanel中项目的可见性。我的Stackpanel包含一个图像和一个文本块。如何正确使用BooltVisibilityConverter切换文本块的可见性,并保存此设置以使用户受益

目前我有如下内容,尽管我有一些错误。重要提示,我需要使用ApplicationBar菜单项作为驱动文本框可见性切换的click事件

编辑

尽管文本块的可见性没有改变,但错误不再发生

XAML

BooleanToVisibilityConverter的一个类

//Error on BooleanToVisibilityConverter stating does not implement interface member 'System.Windows.Data.IValueConverter.Convert(object, System.Type, object, System.Globalization.CultureInfo)
public class BooleanToVisibilityConverter : IValueConverter   
{   

public class BooleanToVisibilityConverter : IValueConverter   
{   
    public object Convert(object value, Type targetType, object parameter, CultureInfo language)      
    {      
        return (value is bool && (bool)value) ? Visibility.Visible : Visibility.Collapsed;      
    }
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo language)      
    {      
        return value is Visibility && (Visibility)value == Visibility.Visible;      
    }   
}
试试这个:

public class BooleanToVisibilityConverter : IValueConverter
{
    private object GetVisibility(object value)
    {
        if (!(value is bool))
            return Visibility.Collapsed;
        bool objValue = (bool)value;
        if (objValue)
        {
            return Visibility.Visible;
        }
        return Visibility.Collapsed;
    }
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        return GetVisibility(value);
    }
    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        throw new NotImplementedException();
    }


}

转换器已经实现了:

这是我的:

public class BoolToVisConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        return (value is bool && (bool)value) ? Visibility.Visible : Visibility.Collapsed;
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        return value is Visibility && (Visibility)value == Visibility.Visible; 
    }
}

布尔人的形象看起来不错。我有一个非常类似的bool到可见性转换器的实现,它工作良好,没有错误。我认为错误源在其他地方..刚刚尝试了上面的转换器代码,它也适用于我。尝试移除转换器,看看错误是否仍然存在?只是为了确认它导致了错误。有时使用转换器,重建项目可能会起作用。试试看!!我确实重新启动并重建了项目,现在没有错误,尽管文本块的实际可见性没有显示/隐藏。这在Windows phoneif中不可用(值为bool&&(bool)value)是的,这样更好:)
public class BooleanToVisibilityConverter : IValueConverter
{
    private object GetVisibility(object value)
    {
        if (!(value is bool))
            return Visibility.Collapsed;
        bool objValue = (bool)value;
        if (objValue)
        {
            return Visibility.Visible;
        }
        return Visibility.Collapsed;
    }
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        return GetVisibility(value);
    }
    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        throw new NotImplementedException();
    }


}
public class BoolToVisConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        return (value is bool && (bool)value) ? Visibility.Visible : Visibility.Collapsed;
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        return value is Visibility && (Visibility)value == Visibility.Visible; 
    }
}