2016-12-10 5 views
0

Я хочу, чтобы проверить, если элемент свернут или видимым, так что я могу скрыть или отобразить его, но я получаю ошибкуПроверьте элемент свернут или видимый

CS0029 Не может неявно преобразовать тип «Windows.UI. Xaml.Visibility 'to' bool.

Код:

if (Test1.Visibility == Visibility.Visible) 
{ 
    Test1.Visibility = Visibility.Collapsed; 
} 
+1

Один '=' является _assignment operator_. Вы ищете оператор _equality_ ('=='). Так что просто знак двойного равенства: if (Test1.Visibility == Visibility.Visible) ' – khlr

+0

Хахаха, вот и все, чувствуя себя действительно глупо сейчас – user6480540

ответ

1

Да, вы не можете иметь возможность установить истинное ложное непосредственно в управление видимостью собственности.

Видимость свойство принимать только Visibility.Visible/Visibility.Hide/Visibility.collapsed

  1. Visible -> Учитывая видимость контроля
  2. Hide -> Скрыть элемент управления, но пустое пространство (колпака между верхняя & Нижняя панель управления)
  3. Свернутый -> Скрыть элемент управления и удалить пустое место.

Если вы хотите присвоить значение true/false в видимости ваших элементов управления, вы хотите использовать преобразователь.

конвертер Класс:

public class BooleanToVisibilityConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return (value is bool && (bool)value) ? Visibility.Visible : Visibility.Collapsed; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

XAML:

Сначала добавьте имя пространства, второй добавить ссылку и вызов конвертер в свой контроль, как ниже Text Box.

<UserControl x:Class="WpfApplication1.UserControl1" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      mc:Ignorable="d" 
      xmlns:local="clr-namespace:WpfApplication1" 
      d:DesignHeight="300" d:DesignWidth="300"> 
    <UserControl.Resources> 
     <local:BooleanToVisibilityConverter x:Key="boolToVisibilityConverter"/> 
    </UserControl.Resources> 
    <Grid> 
     <TextBox Text="{Binding Name}" Visibility="{Binding IsVisibileName, Converter={StaticResource boolToVisibilityConverter}}" /> 
    </Grid> 
</UserControl> 
0

Я стараюсь этот код и у меня нет ошибки

if (Test1.Visibility == Visibility.Visible) 
{ 
Test1.Visibility = Visibility.Collapsed; 
} 
Смежные вопросы