Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/64: Рейтинг темы: голосов - 64, средняя оценка - 4.86
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262

Кастомная кнопка в UserControl или UserControl со свойствами кнопки

01.09.2019, 19:54. Показов 15694. Ответов 128
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет,

пытаюсь запихнуть кастомную кнопку в Useк Control. Что-то ерунда какая-то получается.
Можете помочь?

Хотелось бы UC со свойствами кнопки. Чтобы при клике меняла цвет своего Fill. и чтобы handle event был и binding работал, Также, от прилетаещего bool меняла свой Fill.

Спасибо!

XML
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
<UserControl x:Class="Button_testing.UserControls.Polygon_Button"
             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" 
             xmlns:local="clr-namespace:Button_testing.UserControls"
             mc:Ignorable="d" 
             d:DesignHeight="100" d:DesignWidth="100">
    <Grid>
 
 
       
        <Button Name="button1" Height="90" VerticalAlignment="Bottom" HorizontalAlignment="Left" Width="90"
     Content="No content">
 
            <Button.Template>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Grid Margin="5">
                        <Ellipse Stroke="DarkBlue" StrokeThickness="2">
                            <Ellipse.Fill>
                                <RadialGradientBrush Center="0.3,0.2" RadiusX="0.5" RadiusY="0.5">
                                    <GradientStop Color="Azure" Offset="0.1" />
                                    <GradientStop Color="CornflowerBlue" Offset="1.1" />
                                </RadialGradientBrush>
                            </Ellipse.Fill>
                        </Ellipse>
 
                        <ContentPresenter Name="content" HorizontalAlignment="Center" VerticalAlignment="Center"/>
 
                    </Grid>
                </ControlTemplate>
 
            </Button.Template>
        </Button>
 
    </Grid>
</UserControl>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.09.2019, 19:54
Ответы с готовыми решениями:

Как разместить UserControl поверх другого UserControl
Такая задача. Есть форма. На ней размещена панель panelRight. Также есть два пользовательских контрола (TimelineControl() и Bar()). Потом в...

Не сохраняются значения свойств заданные в дизайнере после создания своего UserControl с дополнительными свойствами
using System.ComponentModel; using System.Windows.Forms; namespace Library { public partial class CellControl : UserControl ...

DP UserControl внутри UserControl MVVM
Есть UC c DP Text &lt;Grid&gt; &lt;TextBlock HorizontalAlignment=&quot;Left&quot; Text=&quot;{Binding Text, ElementName=UC}&quot;...

128
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16150 / 11271 / 2890
Регистрация: 21.04.2018
Сообщений: 33,142
Записей в блоге: 2
03.09.2019, 08:33
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Ахромчон Посмотреть сообщение
Что странно,
в конвертере 'красное подчеркивание' под:
double; invalid expression term.
width; the name 'width' does not exist in the current context.
height; the name 'height' does not exist in the current context.
Цитата Сообщение от Ахромчон Посмотреть сообщение
Т.к. вариант с конвертером "косячный" с точки зрения 'чистоты' проекта, какие-то непонятные ошибки на ровном месте
Скрины экранов с ошибками пришлите.

Должно всё нормально работать. У меня же проект нормально компилится, без предупреждений.
0
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262
03.09.2019, 09:08  [ТС]
Скрины, такие пойдут?
Миниатюры
Кастомная кнопка в UserControl или UserControl со свойствами кнопки   Кастомная кнопка в UserControl или UserControl со свойствами кнопки  
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16150 / 11271 / 2890
Регистрация: 21.04.2018
Сообщений: 33,142
Записей в блоге: 2
03.09.2019, 09:14
Цитата Сообщение от Ахромчон Посмотреть сообщение
Скрины,
У вас, наверное, устаревшие или VS, или C#, или FW.Net

Для более ранних версий надо так
C#
23
24
25
26
27
28
29
30
31
32
33
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            double width, height;
            if
            (
                values?.Length == 2
                && double.TryParse(values[0]?.ToString(), out width)
                && double.TryParse(values[1]?.ToString(), out height))
                return new PointCollection(new Point[] { new Point(0, 0), new Point(width, 0), new Point(0.5 * width, height) });
            return null;
        }
Если выдаст ошибку "Обращение к неинициализированной переменной", то добавьте инициализацию при объявлении double width=0, height=0;. Но насколько помню и без инициализации должно нормально работать.
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16150 / 11271 / 2890
Регистрация: 21.04.2018
Сообщений: 33,142
Записей в блоге: 2
03.09.2019, 17:40
Лучший ответ Сообщение было отмечено Ахромчон как решение

Решение

Цитата Сообщение от Ахромчон Посмотреть сообщение
тот который UC
Я усовершенствовал класс фигурной кнопки - добавил возможность изменения её формы через делегат.
Xaml не менялся, а код CB такой
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
namespace ButtonTriangleWPF
{
    /// <summary>Делегат функции возвращающей коллекцию вершин фигуры вписанной в заданную область</summary>
    /// <param name="width">Ширина области</param>
    /// <param name="height">Высота области</param>
    /// <returns>PointCollection - коллекцию вершин фигуры</returns>
    public delegate PointCollection InscribedPolygonHandler(double width, double height);
    /// <summary>
    /// Логика взаимодействия для ButtonTriangle.xaml
    /// </summary>
    public partial class ButtonTriangle : Button
    {
        public ButtonTriangle()
        {
            InitializeComponent();
        }
 
        static readonly BrushConverter brushConverter = new BrushConverter();
 
 
 
        public InscribedPolygonHandler InscribedPolygonDelegate
        {
            get { return (InscribedPolygonHandler)GetValue(InscribedPolygonDelegateProperty); }
            set { SetValue(InscribedPolygonDelegateProperty, value); }
        }
 
        // Using a DependencyProperty as the backing store for InscribedPolygonDelegate.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty InscribedPolygonDelegateProperty =
            DependencyProperty.Register("InscribedPolygonDelegate", typeof(InscribedPolygonHandler), typeof(ButtonTriangle), new PropertyMetadata((InscribedPolygonHandler)InscribedPolygonMetod));
 
 
 
        protected static readonly DependencyPropertyKey PointsKey =
            DependencyProperty.RegisterReadOnly(nameof(Points), typeof(PointCollection), typeof(ButtonTriangle), new PropertyMetadata(null));
 
        public PointCollection Points
        {
            get { return (PointCollection)GetValue(PointsProperty); }
            protected set { SetValue(PointsKey, value); }
        }
 
        // Using a DependencyProperty as the backing store for Points.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty PointsProperty = PointsKey.DependencyProperty;
        //DependencyProperty.Register(nameof(Points), typeof(PointCollection), typeof(ButtonTriangle), new PropertyMetadata(null));
 
        private void PART_Grid_SizeChanged(object sender, SizeChangedEventArgs e)
            => Points = InscribedPolygonDelegate?.Invoke(e.NewSize.Width, e.NewSize.Height); /*new PointCollection(new Point[] { new Point(0, 0), new Point(e.NewSize.Width, 0), new Point(0.5 * e.NewSize.Width, e.NewSize.Height) });*/
 
        static protected PointCollection InscribedPolygonMetod(double width, double height)
            => new PointCollection(new Point[] { new Point(0, 0), new Point(width, 0), new Point(0.5 * width, height) });
 
        public double StrokeThickness
        {
            get { return (double)GetValue(StrokeThicknessProperty); }
            set { SetValue(StrokeThicknessProperty, value); }
        }
 
        // Using a DependencyProperty as the backing store for StrokeThickness.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty StrokeThicknessProperty =
            DependencyProperty.Register(nameof(StrokeThickness), typeof(double), typeof(ButtonTriangle), new PropertyMetadata(1.0));
 
 
 
        public Brush MouseOverBackground
        {
            get { return (Brush)GetValue(MouseOverBackgroundProperty); }
            set { SetValue(MouseOverBackgroundProperty, value); }
        }
 
        // Using a DependencyProperty as the backing store for MouseOverBackground.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty MouseOverBackgroundProperty =
            DependencyProperty.Register(nameof(MouseOverBackground), typeof(Brush), typeof(ButtonTriangle), new PropertyMetadata(brushConverter.ConvertFrom("#FFBEE6FD")));
 
 
 
        public Brush MouseOverBorder
        {
            get { return (Brush)GetValue(MouseOverBorderProperty); }
            set { SetValue(MouseOverBorderProperty, value); }
        }
 
        // Using a DependencyProperty as the backing store for MouseOverBorder.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty MouseOverBorderProperty =
            DependencyProperty.Register(nameof(MouseOverBorder), typeof(Brush), typeof(ButtonTriangle), new PropertyMetadata(brushConverter.ConvertFrom("#FF3C7FB1")));
 
 
 
        public Brush PressedBackground
        {
            get { return (Brush)GetValue(PressedBackgroundProperty); }
            set { SetValue(PressedBackgroundProperty, value); }
        }
 
        // Using a DependencyProperty as the backing store for PressedBackground.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty PressedBackgroundProperty =
            DependencyProperty.Register(nameof(PressedBackground), typeof(Brush), typeof(ButtonTriangle), new PropertyMetadata(brushConverter.ConvertFrom("#FFC4E5F6")));
 
 
 
        public Brush PressedBorder
        {
            get { return (Brush)GetValue(PressedBorderProperty); }
            set { SetValue(PressedBorderProperty, value); }
        }
 
        // Using a DependencyProperty as the backing store for PressedBorder.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty PressedBorderProperty =
            DependencyProperty.Register(nameof(PressedBorder), typeof(Brush), typeof(ButtonTriangle), new PropertyMetadata(brushConverter.ConvertFrom("#FF2C628B")));
 
 
 
        public Brush DisabledBackground
        {
            get { return (Brush)GetValue(DisabledBackgroundProperty); }
            set { SetValue(DisabledBackgroundProperty, value); }
        }
 
        // Using a DependencyProperty as the backing store for DisabledBackground.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty DisabledBackgroundProperty =
            DependencyProperty.Register(nameof(DisabledBackground), typeof(Brush), typeof(ButtonTriangle), new PropertyMetadata(brushConverter.ConvertFrom("#FFF4F4F4")));
 
 
 
 
        public Brush DisabledBorder
        {
            get { return (Brush)GetValue(DisabledBorderProperty); }
            set { SetValue(DisabledBorderProperty, value); }
        }
 
        // Using a DependencyProperty as the backing store for DisabledBorder.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty DisabledBorderProperty =
            DependencyProperty.Register(nameof(DisabledBorder), typeof(Brush), typeof(ButtonTriangle), new PropertyMetadata(brushConverter.ConvertFrom("#FFADB2B5")));
 
    }
}
Теперь можно задать делегаты для разных фигур и использовать их.
Для примера такой класс с делегатами
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
namespace ButtonTriangleWPF
{
    /// <summary>Статический класс с делегатами создающими списки вершин
    /// различных фигур в заданной области</summary>
    public static class InscribedPolygonClass
    {
        /// <summary>Делегат метода возвращающего коллекцию вершин ромба
        /// вписанного в заданную область</summary>
        public static InscribedPolygonHandler InscribedRhombusDelegate { get; } = (width, height) =>
            new PointCollection
            {
                new Point(0.5 * width, 0),
                new Point(width, 0.5 * height),
                new Point(0.5 * width, height),
                new Point(0, 0.5 * height)
            };
 
        /// <summary>Делегат метода возвращающего коллекцию вершин шестиугольника
        /// вписанного в заданную область</summary>
        public static InscribedPolygonHandler InscribedHexagonDelegate { get; } = (width, height) =>
            new PointCollection
            {
                new Point(0.25 * width, 0),
                new Point(0.75 * width, 0),
                new Point(width, 0.5 * height),
                new Point(0.75 * width, height),
                new Point(0.25 * width, height),
                new Point(0, 0.5 * height)
            };
 
        /// <summary>Делегат метода возвращающего коллекцию вершин "галочки"
        /// вписанной в заданную область</summary>
        public static InscribedPolygonHandler InscribedMarkItemDelegate { get; } = (width, height) =>
            new PointCollection
            {
                new Point( 0, 0),
                new Point(0.5 * width, 0.5 * height),
                new Point(width, 0),
                new Point(0.5 *width, height)
            };
    }
}
И пример XAML с разными кнопками
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
 
        <!--Треугольная кнопка-->
        <local:ButtonTriangle Margin="20"/>
        <!--Ромбическая кнопка-->
        <local:ButtonTriangle Margin="20" Grid.Row="1" 
                              InscribedPolygonDelegate="{x:Static local:InscribedPolygonClass.InscribedRhombusDelegate}"/>
        <!--Шестиугольная кнопка-->
        <local:ButtonTriangle Margin="20" Grid.Column="1" 
                              InscribedPolygonDelegate="{x:Static local:InscribedPolygonClass.InscribedHexagonDelegate}"/>
        <!--Кнопка галочка-->
        <local:ButtonTriangle Margin="20" Grid.Row="1" Grid.Column="1" 
                              InscribedPolygonDelegate="{x:Static local:InscribedPolygonClass.InscribedMarkItemDelegate}"/>
    </Grid>
1
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262
03.09.2019, 18:06  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Для более ранних версий надо так

ну да, в таком виде ошибки испарились. Спасибо.
Не пробовал еще работоспособность биндинга.

Установлена VS2015.

Добавлено через 19 минут
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Я усовершенствовал класс фигурной кнопки - добавил возможность изменения её формы через делегат.
Xaml не менялся, а код CB такой
подпишите пожалуйста файлы, трудно отследить ход вашей мысли.

CB -наверное code behind?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16150 / 11271 / 2890
Регистрация: 21.04.2018
Сообщений: 33,142
Записей в блоге: 2
03.09.2019, 20:10
Лучший ответ Сообщение было отмечено Ахромчон как решение

Решение

Цитата Сообщение от Ахромчон Посмотреть сообщение
CB -наверное code behind?
Да.

Цитата Сообщение от Ахромчон Посмотреть сообщение
подпишите пожалуйста файлы, трудно отследить ход вашей мысли.
А какая разница что в каком файле?
Главное соблюдать пространство имён. А его я указываю.

Но если не поймёте - архив прилагаю.
Вложения
Тип файла: 7z ButtonTriangleWPFv01.7z (27.8 Кб, 10 просмотров)
1
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262
03.09.2019, 21:27  [ТС]
Элд Хасп,

по предыдущему варианту, сунул в проект базирующийся на махаппсе. Главное ошибок нет, но и не работает. Можете у себя протестить?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16150 / 11271 / 2890
Регистрация: 21.04.2018
Сообщений: 33,142
Записей в блоге: 2
03.09.2019, 21:34
Цитата Сообщение от Ахромчон Посмотреть сообщение
Можете у себя протестить?
Архив проекта скиньте
1
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262
03.09.2019, 22:07  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Архив проекта скиньте
прикрепил.
Вложения
Тип файла: zip Triangle_btn.zip (892.9 Кб, 5 просмотров)
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16150 / 11271 / 2890
Регистрация: 21.04.2018
Сообщений: 33,142
Записей в блоге: 2
03.09.2019, 23:10
Цитата Сообщение от Ахромчон Посмотреть сообщение
Главное ошибок нет, но и не работает. Можете у себя протестить?
У меня всё работает.

Немного изменил View - что бы можно было тестить изменение размеров в реалтайм. Меняешь размер окошка - меняется размер треугольника.

И добавил код для привязки делегата создающего фигуру.
Вложения
Тип файла: 7z Triangle_btn_Mahapps_based.7z (3.58 Мб, 8 просмотров)
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16150 / 11271 / 2890
Регистрация: 21.04.2018
Сообщений: 33,142
Записей в блоге: 2
03.09.2019, 23:11
Может со студией у вас проблемы?
Почему на VS2019 не переходите?
1
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262
04.09.2019, 08:23  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Может со студией у вас проблемы?
Почему на VS2019 не переходите?
Я согласен студентам, которых, кстати, вот-вот задачками и курсовыми закидают. Ну и тем, которым новейшие примочки нужны имеющиеся в VS2019.
Можно раз в год с версии на версию скакать. Терять особо нечего.

Такая хорошая кастомная кнопка, была... Жаль. Сейчас не знаю, что и делать, тупик. Что-то тупо простое.

Добавлено через 30 минут
последние полчаса, мысль о том, что это не может быть VS просто не отставала.
Это не VS, это я.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16150 / 11271 / 2890
Регистрация: 21.04.2018
Сообщений: 33,142
Записей в блоге: 2
04.09.2019, 09:29
Цитата Сообщение от Ахромчон Посмотреть сообщение
Ну и тем, которым новейшие примочки нужны имеющиеся в VS2019.
Можно раз в год с версии на версию скакать. Терять особо нечего.
Между VS2015 и 2017 было много изменений.
В 2017 - тоже работает всё без проблем.
А VS2015 на сегодняшний день слишком уж устарел.
Там тоже всё должно работать, но я просто не помню уже какие изменения в версиях были и из-за чего могут быть проблемы.

Опишите подробнее какие конкретно у вас ошибки или баги, возможно предупреждения есть, что именно не работает.
Может вспомню как их в VS2015 исправить можно.

Добавлено через 2 минуты
И OC какая у вас Win7 или выше?
В Win7 там шаблонами какие-то заморочки есть.
Не всё что работает в Win10 будет работать в Win7.
1
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262
04.09.2019, 09:47  [ТС]
Элд Хасп,

В VS2015, на Win7, все работает. Был мой косяк. дошло на утро, в чем может быть проблема.
Тестил properties вашей кнопки на чистом проекте, затем сунул в махапповский, наивно полагая, что настройки properties переехали. А там в default цвета почти не отличаеются pressed, unpressed.
Что создает иллюзию нерабочей кнопки.


Кстати, можете кинуть строчку как пример, как в setter жестко посадить background color.
Я про то меcто где вы делаете override.

Добавлено через 7 минут
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16150 / 11271 / 2890
Регистрация: 21.04.2018
Сообщений: 33,142
Записей в блоге: 2
04.09.2019, 14:43
Цитата Сообщение от Ахромчон Посмотреть сообщение
Кстати, можете кинуть строчку как пример, как в setter жестко посадить background color.
Я про то меcто где вы делаете override.
не понял про что вы. Подробнее и точнее.
1
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262
04.09.2019, 14:51  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
не понял про что вы. Подробнее и точнее.
- как в Triangle_button_EH.xaml выставить свои default background colors UC?
- как в Triangle_button_EH.xaml определить свои default width и height UC?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16150 / 11271 / 2890
Регистрация: 21.04.2018
Сообщений: 33,142
Записей в блоге: 2
04.09.2019, 15:05
Цитата Сообщение от Ахромчон Посмотреть сообщение
- как в Triangle_button_EH.xaml выставить свои default background colors UC?
Значения по умолчанию для новых свойств задаются в CB
C#
1
2
3
4
5
6
7
8
9
10
11
        public Brush MouseOverBackground
        {
            get { return (Brush)GetValue(MouseOverBackgroundProperty); }
            set { SetValue(MouseOverBackgroundProperty, value); }
        }
 
        // Using a DependencyProperty as the backing store for MouseOverBackground.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty MouseOverBackgroundProperty =
            DependencyProperty.Register(nameof(MouseOverBackground), typeof(Brush), typeof(ButtonTriangle), 
                     new PropertyMetadata(brushConverter.ConvertFrom("#FFBEE6FD")));
        /// #FFBEE6FD - это цвет по умолчанию.
Со свойствами наследуемыми от button сложнее. Они свои значения по умолчанию тоже наследуют.
По идее такое надо делать через внешние стили, но я делал их поддержку.
Как временный костыль можно задавать в CB
C#
1
2
3
4
5
6
7
8
    public partial class ButtonTriangle : Button
    {
        public ButtonTriangle()
        {
            InitializeComponent();
 
           // Здесь можно записать жёсткие значения свойств.
        }
Но лучше в XAML (по месту использования) задавать нужные значения свойствам.


Появится свободное время - доработаю кнопку, чтобы можно было её стилизовать внешне.
1
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262
04.09.2019, 16:21  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Значения по умолчанию для новых свойств задаются в CB
а дефолтные height, width?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16150 / 11271 / 2890
Регистрация: 21.04.2018
Сообщений: 33,142
Записей в блоге: 2
04.09.2019, 20:41
Цитата Сообщение от Ахромчон Посмотреть сообщение
а дефолтные height, width?
Эти свойства определены в базовом классе кнопки и задаются там же.
По умолчанию значение NaN.
1
21 / 17 / 1
Регистрация: 01.09.2019
Сообщений: 262
04.09.2019, 21:01  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Эти свойства определены в базовом классе кнопки и задаются там же.
базовый класс кнопки? как посмотреть?

Цитата Сообщение от Элд Хасп Посмотреть сообщение
По умолчанию значение NaN.
что за значение NaN? можно чуть подробнее?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.09.2019, 21:01
Помогаю со студенческими работами здесь

Управление usercontrol из другого usercontrol
На форме размещено 2 usercontrol. Как управлять usercontrol из другого Добавлено через 22 часа 33 минуты Что не кто не поможет?

Вызов свойства кнопки на другом UserControl.xaml.cs
Возник вопрос получения свойства кнопки true на другом UserControl.xaml.cs. На первом UserControl1.xaml.cs кнопка определена как...

Биндинг или DataContext для UserControl
У меня есть простенький UserControl: &lt;UserControl x:Class=&quot;SimpleMVVM.ViewModel.LibraryViewModel&quot; ...

WPF MVVM View и ViewModel или UserControl и DependencyProperty
Не так давно ударился в WPF и шаблон MVVM. Вот такой вопрос возник... У меня есть View которая &quot;собирается&quot; из более мелких View....

Можно ли рисовать сразу на UserControl без Canvas или Grid
Можно ли в SilverLight рисовать сразу на UserControl без Canvas или Grid?


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru