2010-07-22 2 views
0

이미지를 C# WPF의 코드에서 단추로 만들려고합니다 (BG 이미지가있는 단추가 아니라 실제 이미지). 이 사이트에서 이미지를 위해 PictureBox를 사용하기 위해 읽었습니다. 그리고 WPF 상당 이미지가 Image라는 것을 알았습니다. 문제는 PictureBox에 설정할 수있는 .Click이 있음을 발견했지만 Image는 그렇지 않다는 것입니다. 내가 원하는 두 가지 작업은 다음과 같습니다.C# WPF 코드의 단추로 이미지 만들기

  1. 이미지이며 클릭 할 수있는 버튼 배열을 만듭니다.
  2. 클릭되지 않은 클릭 상태에 대한 이미지가 있습니다.

내 앞에 뭔가가 있습니까? 두 번째는 이미지이며 작동하지 않는 동안은 버튼이 아니라 이미지 버튼을 만들 때

sideBarButtons = new Button[infoLoader.categoriesLength]; 
      sideButtons = new Image[infoLoader.categoriesLength]; 
      ImageBrush[] myBg = new ImageBrush[infoLoader.categoriesLength]; 
      for (int i = 0; i < sideBarButtons.Length; i++) 
      { 
       myBg[i] = new ImageBrush(); 
       myBg[i].ImageSource = new BitmapImage(graphicLoader.buttonUnselected[(i % myBg.Length)]); 

       /*sideBarButtons[i] = new Button(); 
       sideBarButtons[i].Content = infoLoader.categories[i].name; 
       sideBarButtons[i].Background = myBg[i]; 
       //sideBarButtons[i].BorderThickness = ; 
       sideBarButtons[i].Width = 155; 
       sideBarButtons[i].Height = 46; 
       Canvas.SetLeft(sideBarButtons[i], 30); 
       Canvas.SetTop(sideBarButtons[i], 10 + (46 * i)); 
       sideBarButtons[i].Click += new RoutedEventHandler(this.SideButton_Click); 
       leftSideBar.Children.Add(sideBarButtons[i]);*/ 

       BitmapImage myBmp = new BitmapImage(); 
       myBmp.BeginInit(); 
       myBmp.UriSource = myBg[i]; 
       myBmp.EndInit(); 

       sideButtons[i] = new Image(); 
       sideButtons[i].Source = myBmp; 
       sideButtons[i].Width = 155; 
       sideButtons[i].Height = 46; 
       Canvas.SetLeft(sideButtons[i], 30); 
       Canvas.SetTop(sideButtons[i], 10 + (46 * i)); 
       sideButtons[i].Click += new RoutedEventHandler(this.SideButton_Click); 
       leftSideBar.Children.Add(sideButtons[i]); 

      } 

첫 번째 주석 영역은 다음과 같습니다

여기에 버튼을 만들어 내 루프입니다. 미리 감사드립니다. 여기

답변

2

두 가지 옵션 :

1) 대신 이미지에 존재하지 않는 Click 이벤트를, 사용은하지 MouseDown을 사용합니다.

2.) 이미지를 사용하고 용도를 ​​변경하는 대신 맞춤 스타일이있는 버튼을 사용하십시오. 그런 다음 버튼 클릭을 처리 할 수 ​​있습니다.

개인적으로는 후자를 사용하지만 실제로 작동합니다.