Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 17.09.2016
Сообщений: 151
1

Видимость кнопки - button.Visibility. Какой это тип?

04.11.2020, 19:58. Показов 4553. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!

Хочу управлять видимостью кнопки через объект.
Для этого в конструкторе необходимо задать переменную, но вот какого типа-я не могу определить.
Насколько я понял, видимость кнопки задается
C#
1
button.Visibility = Visibility.Visible;
.
Так каким типом задать это Visibility.Visible? Bool? Int?
Не получается. Object-тоже.

Подскажите пожалуйста, как решить эту задачу.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.11.2020, 19:58
Ответы с готовыми решениями:

При смене активного окна всегда включается видимость первой панели.До этого нажатием кнопки видимость была отключена
Такая ситуация. В программе 6 панелей,для навигации между ними использованы кнопки. На каждой...

Какой это тип времени?
Доброго времени суток, товарищи знатоки. Прислали на днях файл csv с вот таким временем -...

Какой это тип исключения
Добрый день. Допустим есть некая программа, которая: 1) требует от пользователя ввода строки(в...

Привязка Visibility кнопки
Задача: у меня есть коллекция некоторых объектов. У этих объектов есть некоторые свойства...

8
Администратор
Эксперт .NET
17552 / 13775 / 5298
Регистрация: 17.03.2014
Сообщений: 28,253
Записей в блоге: 1
04.11.2020, 22:56 2
Rudy_SRF, не поверишь - типом Visibility.
0
0 / 0 / 0
Регистрация: 17.09.2016
Сообщений: 151
04.11.2020, 23:47  [ТС] 3
Как его реализовать в классе для создания объекта?
0
Администратор
Эксперт .NET
17552 / 13775 / 5298
Регистрация: 17.03.2014
Сообщений: 28,253
Записей в блоге: 1
05.11.2020, 00:11 4
Rudy_SRF, как и любой другой тип. Объявляем переменную нужного типа и пользуемся.
C#
1
2
3
4
5
6
7
8
9
10
using System.Windows;
...
class VisibilityExample
{
    public VisibilityExample(Visibility visibility)
    {
        // Работа с переменной visibility
        ...
    }
}
1
Модератор
Эксперт .NET
15789 / 10946 / 2843
Регистрация: 21.04.2018
Сообщений: 32,109
Записей в блоге: 2
05.11.2020, 02:16 5
Цитата Сообщение от Rudy_SRF Посмотреть сообщение
Хочу управлять видимостью кнопки через объект.
Дурно пахнущая затея....
Для чего это может понажобиться?
0
Пора на C++?
370 / 264 / 99
Регистрация: 10.04.2020
Сообщений: 1,275
05.11.2020, 11:11 6
Цитата Сообщение от Rudy_SRF Посмотреть сообщение
Хочу управлять видимостью кнопки через объект.
Лучше чтобы кнопка сама управляла своей видимостью, в зависимости от состояния объекта.
0
0 / 0 / 0
Регистрация: 17.09.2016
Сообщений: 151
05.11.2020, 22:03  [ТС] 7
Насчет Visibility все понятно,спасибо,но возникает тогда такой вопрос:создаю объект, ну скажем
C#
1
VisibilityExample visual=new VisibilityExample(Visibility.Visible)
есть кнопка,скажем: btn. Как в этом visual, мне достучаться до Visibility, которое я указывал в конструкторе? Выражение
C#
1
btn.Visibility=visual.Visible
Не работает.Как правильно?
0
Модератор
Эксперт .NET
15789 / 10946 / 2843
Регистрация: 21.04.2018
Сообщений: 32,109
Записей в блоге: 2
05.11.2020, 23:05 8
Цитата Сообщение от Rudy_SRF Посмотреть сообщение
Как правильно?
Ваш "объект" должен быть передан в Контекст Данных (DataContext) Окна.
Обычно "объект" выполняет функции ViewModel.
Хоть это и необязательно, но в концепции WPF очень желательно и считается типовой реализацией.

В этом "объекте" должно быть СВОЙСТВО с INPC, к которому вы сможете в XAML задать привязку.
Что-то подобное этому:
XML
1
               <Button Visibility="{Binding Свойство}" .../>
Обычно в VM не делают свойство типа Visibility.
Типовым является булевое свойство с привязкой через конвертер BooleanToVisibilityConverter.

Примеров такой привязки можете найти множество, что в этом разделе, что в интернете.
0
178 / 93 / 25
Регистрация: 04.02.2016
Сообщений: 298
Записей в блоге: 3
06.11.2020, 09:21 9
Лучший ответ Сообщение было отмечено Rudy_SRF как решение

Решение

Rudy_SRF, как указал уважаемый Элд Хасп, видимостью элементов надо управлять через привязки. Для этого Вам необходимо создать класс:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    [ValueConversion(typeof(bool), typeof(Visibility))]
    public sealed class BooleanToVisibilityConverter : IValueConverter
    {
        public bool IsReversed { get; set; }
        public bool UseHidden { get; set; }
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            var val = System.Convert.ToBoolean(value, CultureInfo.InvariantCulture);
            if (this.IsReversed)
            {
                val = !val;
            }
            if (val)
            {
                return Visibility.Visible;
            }
            return this.UseHidden ? Visibility.Hidden : Visibility.Collapsed;
        }
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
В коде HAML в раздел ресурсов помещаем наш конвертер:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<Window x:Class="LNG_SPS.Views.SomeWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:TestApp.Views"
        mc:Ignorable="d" Background="{DynamicResource MaterialDesignPaper}"
        WindowStartupLocation="CenterScreen"
        Title="Настройки" Height="450" Width="650">
 
</Window>
<Window.Resources>
        <BooleanToVisibilityConverter x:Key="boolToVis" />
</Window.Resources>
<StackPanel>
    <Button Margin="2 0 2 0"
                 Command="{Binding SomeCommand}"
                 ToolTip="Исчезающая кнопка"
                 Content="Button"
                 Visibility="{Binding IsBtnVisible, Converter={StaticResource boolToVis}}">
    </Button>
</StackPanel>
В коде ViewModel (или CodeBehind) создаете соответствующую переменную и присваивая ей значение (true/false) управляете видимостью элемента (не обязательно только кнопки, это работает чуть ли не везде). И обязательно используйте INPC

C#
1
2
3
4
5
6
        private bool _IsBtnVisible;
        public bool IsBtnVisible
        {
            get => _IsBtnVisible;
            set { _IsBtnVisible = value; OnPropertyChanged(); }
        }
2
06.11.2020, 09:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.11.2020, 09:21
Помогаю со студенческими работами здесь

Видимость и не видимость кнопки на форме
Как, в Лазарус, сделать так, чтобы на форме кнопка сначала была не видна, а при наведении на то...

Различие Visibility.Hidden и Visibility.Collapsed
Сразу прошу прощения за глупый вопрос,но в интернете сколько не искал,так до конца и не понял В...

Как добавить кнопки (if (GUI.Button(new Rect(x1, y1, dx, dy), ii.name) в список List<Button>?
Хочу все кнопки добавить в список и выводить на экран из списка. void OnGUI() { if...

Сохранить видимость Button в App.config
Добрый всем день. Подскажите пожалуйста, как можно сохранить в app config видимость кнопки??? Т.е....

Как сделать, чтобы при нажатии кнопки Push Button загоралась та или иная кнопка Radio Button
вопрос: Как сделать,чтобы при нажатие кнопки Push Botton загоралась та или иная кнопка Radio Button?

Изменить цвет кнопки (button) по нажатию кнопки
Здравствуйте, подскажите, пожалуйста, как сделать что когда нажимаешь на копку меняется цвет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru