Я создаю пользовательские кнопки внутри всплывающего окна и установил стиль с триггером для изменения фона кнопки при наведении на нее курсора мыши IsMouseOver. Однако, несмотря на стиль, содержащий триггер смены фона, кнопка не меняет свой цвет при наведении на нее курсора мыши. Я подозреваю, что всплывающее окно может перехватывать события мыши и не передавать их кнопке.
Я установил для параметра AllowsTransparency значение true для всплывающего окна, но это не решило проблему. проблема. Мне нужно, чтобы кнопки внутри всплывающего окна правильно реагировали на событие IsMouseOver и меняли цвет фона.
Минимальный воспроизводимый пример:
public static class ButtonStyles
{
public static Style CreateCustomButtonStyle()
{
Style buttonStyle = new Style(typeof(System.Windows.Controls.Button));
buttonStyle.Setters.Add(new Setter(System.Windows.Controls.Button.BackgroundProperty, new SolidColorBrush(System.Windows.Media.Color.FromRgb(51, 51, 51))));
buttonStyle.Setters.Add(new Setter(System.Windows.Controls.Button.ForegroundProperty, new SolidColorBrush(System.Windows.Media.Color.FromRgb(128, 0, 255))));
buttonStyle.Setters.Add(new Setter(System.Windows.Controls.Button.BorderThicknessProperty, new Thickness(0)));
buttonStyle.Setters.Add(new Setter(System.Windows.Controls.Button.FontFamilyProperty, new System.Windows.Media.FontFamily("Arial Black")));
buttonStyle.Triggers.Add(new Trigger
{
Property = System.Windows.Controls.Button.IsMouseOverProperty,
Value = true,
Setters =
{
new Setter(System.Windows.Controls.Button.BackgroundProperty, new SolidColorBrush(System.Windows.Media.Color.FromRgb(0, 0, 0)))
}
});
return buttonStyle;
}
}
private void ShowContextMenu()
{
if (contextMenuPopup != null)
{
contextMenuPopup.IsOpen = false;
}
contextMenuPopup = new Popup
{
PlacementTarget = row,
Placement = PlacementMode.MousePoint,
StaysOpen = false,
AllowsTransparency = true,
Child = new StackPanel
{
Background = new SolidColorBrush(System.Windows.Media.Color.FromRgb(51, 51, 51)),
Width = 200,
Children =
{
CreateContextButton("TEST1", () => TEST1_Click()),
CreateContextButton("TEST2", () => TEST2_Click()),
CreateContextButton("TEST3", () => TEST3_Click()),
CreateContextButton("TEST4", () => TEST4_Click()),
CreateContextButton("TEST5", () => TEST5_Click())
}
}
};
contextMenuPopup.IsOpen = true;
}
private System.Windows.Controls.Button CreateContextButton(string content, Action clickAction)
{
System.Windows.Controls.Button button = new System.Windows.Controls.Button
{
Content = content,
Style = ButtonStyles.CreateCustomButtonStyle(),
Width = 200,
Height = 25
};
button.Click += (sender, e) => clickAction();
return button;
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... ismouseove
Почему цвет фона кнопки внутри всплывающего окна не меняется при срабатывании IsMouseOver? ⇐ C#
Место общения программистов C#
1733346301
Anonymous
Я создаю пользовательские кнопки внутри всплывающего окна и установил стиль с триггером для изменения фона кнопки при наведении на нее курсора мыши IsMouseOver. Однако, несмотря на стиль, содержащий триггер смены фона, кнопка не меняет свой цвет при наведении на нее курсора мыши. Я подозреваю, что всплывающее окно может перехватывать события мыши и не передавать их кнопке.
Я установил для параметра AllowsTransparency значение true для всплывающего окна, но это не решило проблему. проблема. Мне нужно, чтобы кнопки внутри всплывающего окна правильно реагировали на событие IsMouseOver и меняли цвет фона.
Минимальный воспроизводимый пример:
public static class ButtonStyles
{
public static Style CreateCustomButtonStyle()
{
Style buttonStyle = new Style(typeof(System.Windows.Controls.Button));
buttonStyle.Setters.Add(new Setter(System.Windows.Controls.Button.BackgroundProperty, new SolidColorBrush(System.Windows.Media.Color.FromRgb(51, 51, 51))));
buttonStyle.Setters.Add(new Setter(System.Windows.Controls.Button.ForegroundProperty, new SolidColorBrush(System.Windows.Media.Color.FromRgb(128, 0, 255))));
buttonStyle.Setters.Add(new Setter(System.Windows.Controls.Button.BorderThicknessProperty, new Thickness(0)));
buttonStyle.Setters.Add(new Setter(System.Windows.Controls.Button.FontFamilyProperty, new System.Windows.Media.FontFamily("Arial Black")));
buttonStyle.Triggers.Add(new Trigger
{
Property = System.Windows.Controls.Button.IsMouseOverProperty,
Value = true,
Setters =
{
new Setter(System.Windows.Controls.Button.BackgroundProperty, new SolidColorBrush(System.Windows.Media.Color.FromRgb(0, 0, 0)))
}
});
return buttonStyle;
}
}
private void ShowContextMenu()
{
if (contextMenuPopup != null)
{
contextMenuPopup.IsOpen = false;
}
contextMenuPopup = new Popup
{
PlacementTarget = row,
Placement = PlacementMode.MousePoint,
StaysOpen = false,
AllowsTransparency = true,
Child = new StackPanel
{
Background = new SolidColorBrush(System.Windows.Media.Color.FromRgb(51, 51, 51)),
Width = 200,
Children =
{
CreateContextButton("TEST1", () => TEST1_Click()),
CreateContextButton("TEST2", () => TEST2_Click()),
CreateContextButton("TEST3", () => TEST3_Click()),
CreateContextButton("TEST4", () => TEST4_Click()),
CreateContextButton("TEST5", () => TEST5_Click())
}
}
};
contextMenuPopup.IsOpen = true;
}
private System.Windows.Controls.Button CreateContextButton(string content, Action clickAction)
{
System.Windows.Controls.Button button = new System.Windows.Controls.Button
{
Content = content,
Style = ButtonStyles.CreateCustomButtonStyle(),
Width = 200,
Height = 25
};
button.Click += (sender, e) => clickAction();
return button;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79252726/why-doesnt-the-background-color-of-a-button-inside-a-popup-change-on-ismouseove[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия