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

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

01.09.2019, 19:54. Показов 16147. Ответов 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
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 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
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 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
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 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
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 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
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 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
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
03.09.2019, 23:10
Цитата Сообщение от Ахромчон Посмотреть сообщение
Главное ошибок нет, но и не работает. Можете у себя протестить?
У меня всё работает.

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

И добавил код для привязки делегата создающего фигуру.
Вложения
Тип файла: 7z Triangle_btn_Mahapps_based.7z (3.58 Мб, 8 просмотров)
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 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
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 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
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 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
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 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
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru