2011-03-22 5 views
1

코드 숨김으로 이미지 배경을 설정하려고합니다. 버튼에 배경 이미지를 추가하려고 시도했지만 버튼 위로 마우스를 가져 가면 이미지가 사라집니다. 이 문제를 해결하기 위해 코드 비하인드에서 할 수있는 버튼 비헤이비어를 재정의하는 함수를 작성해야합니다.C# 코드 뒤의 이미지 버튼

그런 다음 다른 방법으로 단추와 이미지를 별도로 그리드 셀에 추가하는 방법을 사용합니다. 문제는 - 이미지를 클릭하면 버튼이 트리거되지 않습니다.

어떻게 마우스 버튼의 나머지 영역입니다 중 하나를 유혹하거나 버튼에 이미지를 누르면 아닌 경우에도, 버튼 및 효과를 누른 호버을 가지고해야합니까?

누군가가 내게 더 나은 해결책을 제안 해 줄 수 있기를 바랍니다. 내 코드는 아래에 있습니다.

 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); 

모든 사용자에게 감사드립니다. 더 많은 정보를 입력 한 후 문제가 해결되었습니다. 내가 한 일은 격자 to Button.Content을 추가 한 다음 이미지를 Grid에 추가합니다. 그리고 불투명도을 사용하여 에 회색 아웃 효과를 추가합니다. IsEnable false 상태. 내 코드를 게시 아래, 누군가가 유용거나 개선 기대 : WPF에서

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; 
    } 

답변

1

버튼은 여러 가지 상태를 가지고 = "정상", "누를" "마우스 오버"세이다.

버튼을 만들면 "정상"상태로 설정됩니다. 또한 "마우스 오버"상태에서 동일한 이미지를 갖도록 설정해야합니다.

+0

가 어떻게 버튼의 MOUSE_OVER 상태로 이미지의 MOUSE_OVER 상태를 결합 할 링크? – KMC

+1

@KMC - 집에서이 작업을 수행하는 코드가 있습니다. 오늘 코드를 찾아서 게시 할 수 있는지 확인합니다. – ChrisF

+0

@ChrisF - 감사합니다. 매우 도움이 될 것입니다. 다른 문제는 버튼 위에 마우스를 올려 놓거나 이미지를 누르면 동일한 버튼 효과를 얻으려는 경우 기본 단추에있는 것과 동일한 Normal, Mouse_Over 및 Presses 상태 이벤트를 다시 작성해야합니다. 아니면 새 마우스 이벤트 클래스에서 기본 마우스 이벤트 클래스를 상속합니까? – KMC