Я пытаюсь установить фоновое изображение в коде позади.Я попытался добавить фоновое изображение к кнопке, но как только я наведу курсор на кнопку, изображение исчезнет.Чтобы решить эту проблему, я должен написать функции для переопределения поведения кнопки, что слишком много для кода.
Затем я использую альтернативный метод, который заключается в добавлении кнопки и изображения отдельно в ячейку сетки.Проблема в том, что когда я нажимаю на изображение, кнопка не срабатывает.
Как заставить кнопку иметь эффект при наведении и при нажатии , даже когда мышь либо зависает, либо нажимает изображение на кнопке, но неоставшаяся область кнопки?
Или надеюсь, что кто-то может предложить мне лучшее решение. Ниже приведен мой код.
InitializeComponent();
Button playBtn = new Button();
playBtn.Width = 60;
playBtn.Height = 30;
Image playIcon = new Image();
playIcon.Source = new BitmapImage(new Uri(@"PATH"));
playIcon.Stretch = Stretch.Uniform;
playIcon.Height = 25;
grid1.Children.Add(playBtn);
grid1.Children.Add(playIcon);
Grid.SetColumn(playBtn, 0);
Grid.SetRow(playBtn, 0);
Grid.SetColumn(playIcon, 0);
Grid.SetColumn(playIcon, 0);
спасибо за каждый вклад, после того, как вы покопались в нем, это вроде как получилось.Я добавил Grid к Button.Content , затем добавил изображение в Grid.И используя Opacity , чтобы добавить эффект серого для IsEnable ложное состояние.Ниже я публикую свой код, надеюсь, кто-нибудь найдет его полезным или улучшит:
Button playBtn = new Button();
Image playIcon = new Image();
public MainWindow()
{
InitializeComponent();
Grid grid2 = new Grid();
RowDefinition grid2_row1 = new RowDefinition();
ColumnDefinition grid2_col1 = new ColumnDefinition();
grid2.RowDefinitions.Add(grid2_row1);
grid2.ColumnDefinitions.Add(grid2_col1);
playBtn.Width = 60;
playBtn.Height = 30;
playBtn.Click += playBtn_Click;
playIcon.Source = new BitmapImage(new Uri(@"pack://PATH..."));
playIcon.Stretch = Stretch.Uniform;
playIcon.Height = 25;
playBtn.Content = grid2;
grid2.Children.Add(playIcon);
grid1.Children.Add(playBtn);
Grid.SetRow(playIcon, 0);
Grid.SetColumn(playIcon, 0);
}
public void playBtn_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("Hello");
}
private void button1_Click(object sender, RoutedEventArgs e)
{
playBtn.IsEnabled = false;
playIcon.Opacity = 0.3;
}