2012-06-16 2 views
1

Я событие срабатывает, когда некоторые кнопки время нажатияНастройка непрозрачности прямоугольника

private void set_Opacity(object sender, RoutedEventArgs e) 
    { 
     this.Opacity = 0; 
    } 

Но нет никакого эффекта, когда кнопка нажата. Что я делаю не так? Спасибо.

EDIT: Я дам некоторый фон о том, что я пытаюсь сделать:

Я создал настроенную кнопку, которая должна свести к минимуму моего окна с исчезать из анимации так вот код этого:

private void minimize_Window(object sender, EventArgs e) 
    { 
     var anim = new DoubleAnimation(0, (Duration)TimeSpan.FromSeconds(1)); 
     anim.Completed += (s, _) => this.Minimize(); 
     this.BeginAnimation(UIElement.OpacityProperty, anim); 



    } 
    private void Minimize() 
    { 
     WindowState = WindowState.Minimized; 
    } 

он отлично работает, хотя проблема в том, что, когда я пытаюсь получить мою программу из панели задач не будет делать ничего (я не в состоянии видеть программу, когда я нажимаю на него из панель задач после ее минимизации). Я понимаю, что непрозрачность моей программы установлена ​​на 0, пока она не сведена к минимуму (из-за анимации). Таким образом, я использовал Активированный событие, призывающее этот метод:

private void set_Opacity(object sender, EventArgs e) 
    { 
     rectangle2.Opacity = 1; 
     WindowState = WindowState.Normal; 
    } 

И все же, тот же вопрос. Надеюсь, ты сможешь помочь.

спасибо.

+0

Что такое 'это' в контексте обработчика событий? И.Е. где определяется этот обработчик события и на каком элементе устанавливается непрозрачность? –

ответ

4

Проблема в том, что в большинстве случаев this будет Window. Однако мое предположение заключается в том, что вы не пытаетесь сделать все окно невидимым, а не прямоугольником. Вам нужно присвоить вашему Rectangle имя, используя атрибут x:Name. Вот пример:

<Rectangle Width="40" Height="40" x:Name="MyRectangle" Fill="Red" /> 

Затем в вашей кнопке мыши:

private void set_Opacity(object sender, RoutedEventArgs e) 
{ 
    MyRectangle.Opacity = 0; 
} 

Если вы действительно пытаетесь установить всю Window «s прозрачность:

всего окно не можете установите его непрозрачность, если вы не укажете AllowTransparency на значение true и WindowStyle на None в вашем XAML:

<Window x:Class="ScratchApplication.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     AllowsTransparency="true" WindowStyle="None"> 

Обратите внимание на установленные атрибуты.

EDIT:

мне нужно событие, чтобы выстрелить, когда моя программа активируется обратно из моей панели задач. Вы знаете, какое событие я мог бы использовать?

Используйте событие Window.Activated.Из вашего XAML:

<Window Activated="Window_Activated"> 

И в вашей C#:

private void Window_Activated(object sender, EventArgs e) 
{ 
    //Put code here 
} 
+0

Прошу прощения, мне просто пришлось изменить «this» на «rectangle2». Я устанавливал непрозрачность кнопки вместо прямоугольника><. Хотя я столкнулся с другой проблемой, может быть, вы могли бы помочь? Мне нужно событие, которое будет запущено, когда моя программа будет активирована обратно из моей панели задач. Вы знаете, какое событие я мог бы использовать? – idish

+0

@idish См. Правки. – vcsjones

+0

См. Мой отредактированный пост^надеюсь, что вы сможете помочь, если сможете: – idish

0

Это должно иметь некоторый эффект (при условии, что это вызвано в главном окне приложения WPF, это сделает все окно черным).

Похоже, что обработчик событий неправильно подключен. Попробуйте установить точку останова на линии настройки непрозрачности или щелкнуть правой кнопкой мыши по имени функции set_opacity и выбрать «Найти все ссылки», вы должны увидеть обработчик события, созданный в файле windowname.g.cs.

+0

Я просто проверил его сейчас, событие получило название. – idish

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