Я создаю пользовательские кнопки внутри всплывающего окна и установил стиль с триггером для изменения фона кнопки при наведении на нее курсора мыши 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#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Android Studio пользовательский цвет кнопки не меняется, в то время как форма меняется
Anonymous » » в форуме Android - 0 Ответы
- 34 Просмотры
-
Последнее сообщение Anonymous
-