Как скрыть элекмент по условию в xaml?

350
12 февраля 2017, 09:32

Есть свойство cnt, как я могу скрыть элемент когда cnt > 5?

Что-то типо тернарного оператора

Visibility="{Binding Path=Test.cnt > 5 ? 'Hidden' : 'Visibile'}"
Answer 1

Вам нужно использовать конвертер значений.

Это средство, позволяющее преобразовывать любой тип исходных данных в любой тип представления объекта, который может быть передан связанному элементу управления.

То есть преобразовать int к Visibility как в вашем случае. Более подробно можете прочитать здесь.

Конвертер будет выглядеть примерно следующим образом:

class CountToVisibilityConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        int count;
        bool success = int.TryParse(value.ToString(), out count);
        if (!success)
        {
            return Visibility.Hidden;
        }
        if (count > 5)
            return Visibility.Hidden;
        if (count < 0)
            return Visibility.Collapsed;
        return Visibility.Visible;
    }
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return value;
    }
}

Далее используем его в разметке:

<StackPanel>
    <StackPanel.Resources>
        <local:CountToVisibilityConverter x:Key="CountToVisibilityConverter" />
    </StackPanel.Resources>
    <TextBox Text="{Binding Count, UpdateSourceTrigger=PropertyChanged}"/>
    <Button Content="Button1" Visibility="{Binding Count, Converter={StaticResource CountToVisibilityConverter}}" />
    <Button Content="Button2" />
</StackPanel>

READ ALSO
Сессия asp .net

Сессия asp .net

Имеется проект на технологии aspnet

279
Удаление элемента из TreeView

Удаление элемента из TreeView

Подскажите как сделать удаление выделенного элемента из TreeView? (находящегося не на самом верхнем уровне)

463
Отображение приложения на разных OS

Отображение приложения на разных OS

Есть ли какой то способ, для того что бы приложения на WinForms или WPF начиная с XP и дальше до 10, выглядели одинаково? Есть иногда даже разница между...

366
Логика добавления записи в базы данных Access

Логика добавления записи в базы данных Access

Разъясните логику записи строки в базу

299