Как сделать кнопку в wpf

Добавил пользователь Alex
Обновлено: 10.09.2024

namespace WpfApp1
public partial class MainWindow : Window
public MainWindow()
InitializeComponent();
>
private void SetCaption(string text) => Label1.Content = text;
private void Button_Click(object sender, RoutedEventArgs e)
SetCaption(TextBox1.Text);
>
>
>

Есть кнопки и есть одна функция которая должна принимать параметры от этих кнопок в виде цифр от 0 до 9 и операторы /*+-. Функция должна принять параметры и посчитать и выдать результат.

в JavaScript это делается так
button onclick="f1(your_parameter)"

как давно я на твоем этом WPF ничего не писал
ну года 3
а нормально никогда не писал

У меня есть группа кнопок, которые должны действовать как кнопки переключения, а также как переключатели, где в текущий момент может быть выбрана / нажата только одна кнопка. Также необходимо иметь состояние, в котором ни одна из кнопок не выбрана / не нажата.

Поведение будет похоже на панель инструментов Photoshop, где в любой момент можно выбрать ноль или один из инструментов!

Есть идеи, как это можно реализовать в WPF?


На мой взгляд, это самый простой способ.

Этот ответ следует выбрать однозначно. Дает вам все преимущества радиокнопки без недостатков привязки к какому-либо контроллеру. Сначала я попытался привязать к отдельному набору невидимых радиокнопок, но это привело к ненужным накладным расходам и закончилось ошибкой, когда все нажатые кнопки выглядели выделенными, но не обязательно отмеченными.

Или, если вам нужно применить это ко всем RadioButton внутри элемента (например, a Grid ), используйте

Самый простой способ - стилизовать ListBox, чтобы использовать ToggleButtons для его ItemTemplate.

Затем вы можете использовать свойство SelectionMode ListBox для обработки SingleSelect и MultiSelect.

Это плохой пример, потому что вы путаете отображение и поведение. Вы изменяете отображение через datatemplate, но у вас по-прежнему есть поведение списка, а не поведение набора переключателей / переключателей. Странное взаимодействие с клавиатурой. Лучшим решением будет ItemsControl с RadioButtons в стиле ToggleButtons (см. Другой ответ с наибольшим количеством голосов).

у меня работает, наслаждайтесь!

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

Хорошо, это действует ТАК ЖЕ, что и кнопка переключения. Щелкните, чтобы проверить, и нажмите ту же кнопку, чтобы снять отметку. и как только я помещаю все RadioButton в одну группу, они действуют как Radio-кнопки. Спасибо, RoKK .

вы всегда можете использовать универсальное событие для Click кнопки ToggleButton, которое устанавливает для всех ToggleButton.IsChecked в групповом элементе управления (Grid, WrapPanel, . ) значение false с помощью VisualTreeHelper; затем еще раз проверьте отправителя. Или что-то в этом роде.

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

Но есть ли способ отменить выбор всех кнопок с помощью переключателей? После выбора я не вижу простого способа отменить его!

RadioButton имеет свойство IsChecked, вы можете установить для него значение false в коде, когда вам нужно

Вы также можете попробовать System.Windows.Controls.Primitives.ToggleButton

Затем напишите код для IsChecked свойства, чтобы имитировать эффект радиокнопки.

Я сделал это для RibbonToggleButtons, но, возможно, то же самое и для обычных ToggleButtons.

Затем, чтобы предотвратить снятие отметки с кнопки, которая уже отмечена, поместите это в свой код для события Click для каждого из RibbonToggleButtons:

Чтобы помочь таким людям, как мы с Джулианом (две минуты назад . ). Вы можете извлечь из этого RadioButton вот что.

Затем вы можете использовать его, как предложил Удай Киран .

Этот метод позволяет только один , ToggleButton чтобы быть Checked в то время, и это также позволяет Непроверку.


И различные группы переключателей, которые выглядят как кнопки-переключатели:


Одна упрощенная реализация может заключаться в том, что вы поддерживаете флаг в своем коде, например:

Затем назначьте единственный обработчик событий Checked для всех ваших кнопок ToggleButton в контексте:

Мне нужно создать закругленные кнопки углу глянцевая в WPF. Может кто-нибудь объяснить мне, какие шаги необходимы?

Button. Controls/WPF - Свойства

WPF - Как добавить изображение на кнопку

Закругленные внутрь углы при помощи CSS

Смена стандартной рамки окна на кастомную | WPF

Вы должны создать свой собственный шаблон controltemplate для кнопки. просто взгляните на образец

создали стиль под названием RoundCorner и внутри, что я изменилась, а создал свой собственный новый шаблон с границы (структура cornerradius=8) для круглого угла и некоторые справочные и другие активирующим эффектом. Если у вас есть или знаете, Бленда выражение Это можно сделать очень легко.

Использование

Это больше минимальный шаблон, чтобы сделать кнопку с закругленными углами, однако у вас не возникнет никаких наведите или нажмите визуальные эффекты. Но вы можете добавить это в шаблон управления по мере необходимости. Я работала с темным фоном, поэтому на белом фоне.

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

С controltemplate по умолчанию для кнопки управления использует границы элемента, добавление стиля на границе с кнопкой'ы ресурсов применяет этот стиль к этой границе. Это позволяет добавить закругленные углы без того, чтобы сделать свой собственный шаблон controltemplate и без какого-либо кода. Он также работает на всех разновидностях кнопки (например, выключатель и кнопки повторения).

Вы можете попробовать это.

В качестве альтернативы, можно что-то вроде этого код:

Кнопка запах мяты В&;&; будет выглядеть примерно так:

Как это будет выглядить

Можно установить любой другой контент, вместо изображения.

Это адаптированная версия @Кишоре Кумар 'ы ответьте, что это проще и более соответствует стиль кнопки по умолчанию и цвета. Он также устраняет проблему, которая его и"IsPressed на" курок находится в неправильном порядке и никогда не будет выполнена, поскольку в "мыши" и будет прецедент:

в вашем приложении.язык XAML добавить эту часть в стиле :

Вы можете использовать вложенные свойства для настройки кнопка радиус границы (так же будет работать для текстовых полей).

Создать класс для вложенного свойства

Затем вы можете использовать синтаксис вложенного имущества на несколько кнопок без дубликатов стиль:

Ну лучший способ, чтобы сделать круглые углы быстро и со стандартной анимации-создать копию шаблона элемента управления с помощью Blend. Как только вы получите копию установить радиус угла по тегу сетки и вы должны быть в состоянии иметь свой контроль с полной функциональностью анимации и applyable на любую кнопку управления. посмотрите этот код:

Я также редактировал состояние visualstate="и PointerOver" и конкретно в раскадровке.Выражение targetname="и BorderBrush и", потому что его расширение themeresource вам в квадрате углы при PointerOver триггеров.

Затем вы должны быть в состоянии применить его к вашему стилю управления, такие как этот:

Как мне его создать, шаг за шагом?

П.С .: Я уже пробовал это с CustomControl в WPF и свойством BasedOn .

Вы можете сделать это легко с помощью стиля и прикрепленного свойства:

Тогда в разметке:

Этот пример выглядит довольно отвратительно, но вы можете легко изменить StackPanel на Grid или что-то подобное, чтобы ограничить пропорции изображения. Использование ContentPresenter позволяет вам сохранить поведение кнопки, позволяя помещать любые UIElement внутри, сохраняя поддержку Command и т.д.

Я наконец-то создал кнопку с изображением + текст внутри:

Ниже приведен полный код:

Шаг 1: Создайте новый пользовательский элемент управления под названием: ImageButtonUC

Шаг 2: Редактируйте ImageButtonUC.xaml.cs

Шаг 3: В вашем xaml вы можете использовать его следующим образом: Добавьте пространство имен как

И использовать его как:

Если вы не хотите писать какой-либо код позади, есть другой способ сделать это (вдохновленный ответом Джеффоры). Вы можете использовать поле Content элемента управления, чтобы поместить URI к изображению, которое вы хотите видеть в своей кнопке:

И тогда вы можете отредактировать стиль кнопки по умолчанию, чтобы он выглядел так:

Читайте также: