2012-06-16 93 views
1

的不透明度被點擊時有按鍵設置矩形

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

但有按鈕被點擊時沒有效果我有一個觸發的事件。我究竟做錯了什麼? 謝謝。

編輯: 我給什麼,我試圖做一些背景:

我創建了一個自定義的按鈕應我的窗口淡出動畫所以這裏最小化是它的代碼:

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,同時它被最小化(因爲動畫)。 所以我用的Activated事件調用該方法:

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

而且還在,同樣的問題。希望你能幫忙。

非常感謝。

+0

什麼在你的事件處理程序的上下文是 '本'? I.E.這個事件處理程序在哪裏定義,並且在哪個元素上設置了不透明度? –

回答

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的透明度:

出整個窗口不能除非您在您的XAML中指定AllowTransparency爲true並且WindowStyle爲無,否則爲不透明度集:

<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"> 

請注意正在設置的屬性。

編輯

我需要一個事件被解僱我的程序正在從我的任務欄啓動回來的時候。你有什麼想法我可以使用什麼事件?

使用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