Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 2
Регистрация: 23.10.2011
Сообщений: 154
1

Возможно ли создать внутри Button еще какой-нибудь объект ? Линию или Прямоугольник,например

01.06.2014, 18:34. Показов 926. Ответов 7
Метки нет (Все метки)

Всем доброго времени суток!

Есть набор элементов - 1000 кнопок.Можно ли внутри них создать линии,например.

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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
 
namespace RandomButtons
{
    // Создаём класс - наследник Canvas
    public class MyButtonCanvas : Canvas
    {
        // Генератор псевдослучайных чисел
        Random rnd = new Random();
        // Ширина для кнопок
        const double ChildrenWidth = 40;
        // Высота для кнопок
        const double ChildrenHeight = 40;
        // Метод, который срабатывает при изменении размеров Canvas
        // и соответственно располагающий дочерние элементы на нём
 
 
 
 
        bool arranged = false;
        // Метод, который срабатывает при изменении размеров Canvas
        // и соответственно располагающий дочерние элементы на нём
        protected override Size ArrangeOverride(Size arrangeSize)
        {
            if (!arranged)
            {
                // проходим по всей коллекции кнопок
                foreach (UIElement child in Children)
                {
                    // Задаём отступ слева
                    // Отступ генерируется в значениях между 0 и шириной Canvas за вычетом ширины кнопки
                    SetLeft(child, (double)rnd.Next(0, (int)(arrangeSize.Width - ChildrenWidth)));
                    // Задаём отступ сверху
                    // Отступ генерируется в значениях между 0 и высотой Canvas за вычетом высоты кнопки
                    SetTop(child, (double)rnd.Next(0, (int)(arrangeSize.Height - ChildrenHeight)));
                }
                arranged = true;
            }
            // Поднимаем базовую реализацию (скрывать нет смысла)
            return base.ArrangeOverride(arrangeSize);
        }
 
        /* // проходим по всей коллекции кнопок
         foreach (UIElement child in Children)
         {
             // Задаём отступ слева
             // Отступ генерируется в значениях между 0 и шириной Canvas за вычетом ширины кнопки
             SetLeft(child, (double)rnd.Next(0, (int)(arrangeSize.Width - ChildrenWidth)));
             // Задаём отступ сверху
             // Отступ генерируется в значениях между 0 и высотой Canvas за вычетом высоты кнопки
             SetTop(child, (double)rnd.Next(0, (int)(arrangeSize.Height - ChildrenHeight )));
         }
         // Поднимаем базовую реализацию (скрывать нет смысла)
         return base.ArrangeOverride(arrangeSize);
     }
         */
        // Создание коллекции дочерних элементов
        protected override UIElementCollection CreateUIElementCollection(FrameworkElement logicalParent)
        {
            // Новая коллекция
            var collection = new UIElementCollection(this, this);
            // Генерируем кнопки
            // Содержание кнопки - текст от 000 до 0999
            // Ширина и высота кнопки - константы
            var buttons = Enumerable.Range(0, 1000).Select(s => new Button()
            {
                Content = s.ToString("0000"),
                Width = ChildrenWidth,
                Height = ChildrenHeight
            }).ToArray();
 
            // Добавляем кнопку в коллекцию
            foreach (var btn in buttons)
                collection.Add(btn);
            // возвращаем коллекцию
            return collection;
        }
 
 
 
 
 
    }
 
}
0

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

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.06.2014, 18:34
Ответы с готовыми решениями:

Возможно ли вычислить анонима через IP адрес или еще какими-нибудь способами
Подскажите, возможно ли вычислить анонима через IP адрес или еще какими-нибудь способами? Хочу...

Подозрение на майнер или ещё какой-нибудь гадкий вирус
Здравствуйте! На этот раз пишу с маминого ноутбука)) Ноут давным-давно стал медленно...

На множестве файлов или файловой системы (например, своей флэшки) ввести какой-нибудь порядок
На множестве файлов или файловой системы (например, своей флэшки) ввести какой-нибудь порядок....

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

7
57 / 57 / 33
Регистрация: 08.03.2014
Сообщений: 138
01.06.2014, 19:13 2
Можно конечно, у кнопки есть свойство Content, туда пихаете StackPanel, а в нее уже все что угодно
пример кнопки с изображением:
C#
1
2
3
4
5
6
7
8
9
10
Image img = new Image();
  img.Source = new BitmapImage(new Uri("foo.png"));
 
  StackPanel stackPnl = new StackPanel();
  stackPnl.Orientation = Orientation.Horizontal;
  stackPnl.Margin = new Thickness(10);
  stackPnl.Children.Add(img);
 
  Button btn = new Button();
  btn.Content = stackPnl;
1
0 / 0 / 2
Регистрация: 23.10.2011
Сообщений: 154
01.06.2014, 19:29  [ТС] 3
you_rule, спасибо ! А вы не могли бы поподробнее объяснить на примере вот этого кусочка кода

C#
1
2
3
4
5
6
var buttons = Enumerable.Range(0, 1000).Select(s => new Button()
            {
                Content = s.ToString("0000"),
                Width = ChildrenWidth,
                Height = ChildrenHeight
            }).ToArray();
Добавлено через 14 минут
you_rule, я вроде прикрепил.Для тестирования взял Ваш вариант . Билдится успешно.Но при запуске выдает ошибку на строку :
C#
1
img.Source = new BitmapImage(new Uri("foo.png"));
0
15 / 14 / 2
Регистрация: 18.07.2013
Сообщений: 41
01.06.2014, 19:38 4
Может картинки нет?)
0
57 / 57 / 33
Регистрация: 08.03.2014
Сообщений: 138
01.06.2014, 19:45 5
евг, ну вот как-то так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
            var buttons = Enumerable.Range(0, 1000).Select(s =>
            {
                StackPanel stk = new StackPanel();
                Image img = new Image();
                img.Source = new BitmapImage(new Uri("path.img"));
                // сюда добавляем что угодно, в данном случае изображение
                stk.Children.Add(img);
                var btn = new Button();
                Width = ChildrenWidth;
                Height = ChildrenHeight;
                btn.Content = stk;
                return btn;
            }).ToArray();
ну канешн на отсутствие картинки ругается)
1
0 / 0 / 2
Регистрация: 23.10.2011
Сообщений: 154
01.06.2014, 19:54  [ТС] 6
you_rule, Спасибо большое!

Добавлено через 8 минут
you_rule, извините за настырность,а картинку нужно куда положить ? и в строчке
C#
1
new Uri("foo.png")
нужно полный путь указывать ?

Вот такая ошибка

{"Недопустимый URI: Невозможно определить формат URI."}
0
57 / 57 / 33
Регистрация: 08.03.2014
Сообщений: 138
01.06.2014, 20:22 7
евг,
если путь относительный, то так
C#
1
img.Source = new BitmapImage(new Uri("path.img"),UriKind.Relative);
1
0 / 0 / 2
Регистрация: 23.10.2011
Сообщений: 154
01.06.2014, 20:22  [ТС] 8
you_rule, о! спасибо огромное!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.06.2014, 20:22

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

Как создать 2 Bands HasDetal или еще что-нибудь!!! и вопрос по SQL
Здрасте!!! 2 вопроса: 1) Как создать 2 Bands HasDetal??? Или как нибудь подругому решить...

Подскажите какие-нибудь книги по мат. моделированию. Или что-нибудь еще в этом роде.
Вот и закончился курс дифференциальных уравнений, экзамен сдан. Хотелось бы спросить вот что....

SMART HDD, взгляните пожалуйста, возможно ли ещё что-нибудь сделать
Здравствуйте. История такая - в один прекрасный день Win7 сообщила о неполадках жесткого....

Как результат работы программы (например какой-нибудь текст) опубликовать на форуме
Можно ли сделать так чтобы результат работы программы (например какой не будь текст) публиковался...


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

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

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