Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
 
project2pro
1 / 1 / 1
Регистрация: 21.03.2018
Сообщений: 77
1

Панель кнопок

24.06.2018, 12:31. Просмотров 118. Ответов 4
Метки нет (Все метки)

Помогите пожалуйста реализовать такую штуку, имеется ScrollViewer1 в него вложен StackPanel (ориентация вертикальная) c сотней другой кнопок ,
на каждой кнопке лежит StackPanel (ориентация горизонтальная) в который вложены Image , CheckBox и TextBlock,

CheckBox на каждой кнопке служит для управления видимостью этой кнопки ,
т.е.
первый раз когда открывается окно пользователь на этой панели счелкает какие кнопки показывать и потом при каждом открытии на панели только те которые пожелал видеть пользователь

Вот типа такого
0
Миниатюры
Панель кнопок  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2018, 12:31
Ответы с готовыми решениями:

Полупрозрачная панель
Здраствуйте. У меня вопрос, можно ли каким-нибудь образом сделать panel или...

Прозрачная панель
прозрачную панель я сделал, в инете нашед пример, под ней лежит еще одна пенель...

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

Удаление кнопок
Здравствуйте, у меня вот какой вопрос, я динамически создаю кучу кнопок ...

Массив кнопок
Здраствуйте. Есть : Button allBtn = new Button { btn1, btn2, btn3,...

4
project2pro
1 / 1 / 1
Регистрация: 21.03.2018
Сообщений: 77
24.06.2018, 23:59  [ТС] 2
нашел часть решения
XML
1
2
3
4
5
6
7
....
<Window.Resources>
       <local:BoolToVisibilityConverter x:Key="boolToVisibilityConverter"/>
</Window.Resources>
...
......
<Button x:Name="but1" Visibility="{Binding ElementName=chBox1, Path=IsChecked, Converter={StaticResource boolToVisibilityConverter}}" .....
привязал видимость кнопки к CheckBox ,

теперь как бы сделать чтобы при например клике по кнопке "Показать все кнопки" видимость востанавливалась
0
project2pro
1 / 1 / 1
Регистрация: 21.03.2018
Сообщений: 77
25.06.2018, 00:03  [ТС] 3
вот скрин
0
Миниатюры
Панель кнопок  
project2pro
1 / 1 / 1
Регистрация: 21.03.2018
Сообщений: 77
25.06.2018, 02:43  [ТС] 4
Подскажите как определить все CheckBox-ы , причем они лежат не на форме непосредственно , а каждый CheckBox на своей кнопке,
может как то получить все кнопки а потом для каждой кнопки определить дочек
делаю так
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
private void Button_Click(object sender, RoutedEventArgs e)// нажали кн."Показать  объекты на форме"
        {
            var but = FindChilds<Button>(Application.Current.MainWindow);// ищем   кнопки
 
            textBox1.AppendText(" Найденные кнопки на форме \n");
 
            for (int i = 0; i < but.Count; i++)
            {
                textBox1.AppendText("(объект № " + i.ToString() + " )  ---  " + but[i].Name + " \n");
            }
 
            textBox1.AppendText(" \n    CheckBox-ы  формы \n");
            
            var chBox = FindChilds<CheckBox>(Application.Current.MainWindow);
 
            for (int j = 0; j < chBox.Count; j++)
            {
                textBox1.AppendText("(объект № " + j.ToString() + " )  ---  " + "   " + chBox[j].Name + " \n");
            }
 
        }
 
 
public static List<T> FindChilds<T>(DependencyObject parent) where T : DependencyObject
        {
            if (parent == null)
                return null;
 
            List<T> foundChilds = new List<T>();
            int childrenCount = VisualTreeHelper.GetChildrenCount(parent);
 
            for (int index = 0; index < childrenCount; index++)
            {
                var child = VisualTreeHelper.GetChild(parent, index);
                T childType = child as T;
                if (childType == null)
                {
                    var result = FindChilds<T>(child);
                    if (result.Any())
                    {
                        foundChilds.AddRange(result);
                        break;
                    }
                }
                else
                {
                    foundChilds.Add((T)child);
                }
            }
            return foundChilds;
        }


но почему то один ЧекБокс показывает , то есть его видно , а остальные не определяются , хотя они все сделаны одинаково , т.е. через КопиПаст, в чем проблема не пойиу
0
Миниатюры
Панель кнопок  
project2pro
1 / 1 / 1
Регистрация: 21.03.2018
Сообщений: 77
25.06.2018, 03:10  [ТС] 5
ОК , получилось вот так
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
private void ButtonAll_Click(object sender, RoutedEventArgs e) //показать  все кнопки
        {
            var but = FindChilds<Button>(Application.Current.MainWindow);  
             
            for (int i = 0; i < but.Count; i++)
            {
                var chBox = FindChilds<CheckBox>(but[i]);
 
                for (int j = 0; j < chBox.Count; j++)
                                chBox[j].IsChecked = true  ;
            }
        }


Добавлено через 5 минут
теперь осталось сделать чтобы при закрытии окна сохранялось какие кнопки видимы чтобы при следующем открытии открыть с видимостью отмеченных кнопок,
подскажите как лучше сохранить в XML или через Settings.settings
0
25.06.2018, 03:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2018, 03:10

Обработчик кнопок
Доброго времени суток. столкнулся с проблемой, суть в том, что я создаю n...

Панель с изображениями из listbox
Всем привет! Я создаю галерею, создал стену из изображений, но только они...

панель регулятора громкости
Доброго дня Всем! Подскажите пожалуйста, каким образом из приложения вызвать...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru