C#代码背后的图像按钮

时间:2011-03-22 10:21:52

标签: c# wpf button imagebutton

我正在尝试在代码隐藏中设置图像背景。我尝试在按钮上添加背景图像,但只要将鼠标悬停在按钮上,图像就会消失。要解决这个问题,我必须编写函数来覆盖按钮行为,这在代码隐藏中要做得太多了。

然后我使用另一种方法,即将一个按钮和一个图像分别添加到网格单元格中。问题是 - 当我点击图像时,按钮不会触发。

如果鼠标悬停或按下按钮上的图像,而不是按钮,如何使按钮具有悬停按下效果按钮的剩余区域?

或希望有人可以建议我一个更好的解决方案。下面是我的代码。

        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);
感谢所有人的投入,在深入研究之后,它有点成功。我所做的是将网格添加到 Button.Content ,然后将图像添加到网格中。并使用不透明度 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;
    }

2 个答案:

答案 0 :(得分:1)

WPF中的按钮有不同的状态=“正常”,“鼠标悬停”和“按下”是三种。

创建按钮时,您将其设置为“正常”状态。您还需要将“鼠标悬停”状态设置为具有相同的图像。

答案 1 :(得分:1)