2014-01-30 4 views
1

Я добавляю элемент кнопки и изображения с помощью кода. Мое приложение wpf может отображать изображение, сохраненное в моем проекте, когда я нажимаю кнопку. Я хочу скрыть отображаемое изображение, если я снова нажал кнопку. Как я смогу достичь этого, если у меня есть только один обработчик событий для моей кнопки?Как скрыть или показать изображение одним щелчком мыши событие

public partial class MainWindow : Window 
{ 

    public MainWindow() 
    { 
     InitializeComponent(); 
     grid_parent.RowDefinitions.Add(new RowDefinition { Height = new GridLength(150, GridUnitType.Pixel) }); 
     grid_parent.RowDefinitions.Add(new RowDefinition { Height = new GridLength(150, GridUnitType.Auto)}); 

     Button btn_submit = new Button { Content = "Submit" }; 
     btn_submit.HorizontalAlignment = System.Windows.HorizontalAlignment.Center; 
     Grid.SetRow(btn_submit, 1); 
     btn_submit.Click += btn_submit_Click; 
     grid_parent.Children.Add(btn_submit); 
    } 

    void btn_submit_Click(object sender, RoutedEventArgs e) 
    { 
     image = new Image { Source = new BitmapImage(new Uri(@"/AddControlsThroughClass;component/images/julie.jpg", UriKind.Relative)) };  
     image.Stretch = Stretch.Uniform; 
     Grid.SetRow(image, 0); 
     grid_parent.Children.Add(image); 
    } 
} 
+2

Используйте кнопку Toggle. –

+1

http://stackoverflow.com/questions/7677906/wpf-toggle-button-checked-uchecked-event-with-one-handler –

+1

Или вы можете проверить свойство изображения. если видимый, то он исчезнет и наоборот –

ответ

1

Контроль Button не имеет никакого понятия о том, когда она была нажата. Вместо того, чтобы использовать обычный Button, вам было бы более полезно использовать ToggleButton, который делает знает, когда он был нажат. Класс ToggleButton имеет свойство IsChecked, которое будет установлено на true после первого щелчка и обратно до false после другого нажатия. Поэтому существует очень простое решение, использующее это свойство ToggleButton:

image.Visibility = toggleButton.IsChecked ? Visiblity.Visible : Visiblity.Collapsed; 
0

Вы можете сделать это с помощью кнопки, однако вы можете сделать также с KeyPreview собственности

Вот код с KeyPreview

private void HideShow(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.S) 
      pictureBox1.Visible = true; 
     else if (e.KeyCode == Keys.H) 
      pictureBox1.Visible = false; 
    } 

Из свойств вашей формы добавить в KeyDown Собственость вас можно скрыть и показать фото

Или вы можете сделать с помощью кнопки

этим кодом

pictureBox1.Visible = !pictureBox1.Visible 

каждый раз, когда вы нажимаете на кнопку он будет видимым или невидимым)

+2

-1 Это WPF, а не Winforms ... посмотрите на теги вопроса. вы делаете * не * устанавливаете 'Visibilty' как в WPF. – Sheridan

Смежные вопросы