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,而它被最小化(因为动画)。所以我使用了调用该方法的激活事件:

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

而且,同样的问题。希望你能帮忙。

非常感谢你。

4

2 回答 2

4

问题似乎是,在大多数情况下,this将是一个Window. 不过,我的假设是,您并没有尝试将整个窗口设置为不可见,而是设置为矩形。您需要使用x:Name属性为您的 Rectangle 命名。这是一个例子:

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

然后,在您的按钮中单击:

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

如果你真的想设置整个Window's 的透明度:

除非您在 XAML 中指定AllowTransparency为 true 和WindowStyleNone,否则不能设置整个 Window 的不透明度:

<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
}
于 2012-06-16T16:22:20.977 回答
0

这应该有一些效果(假设这是在 WPF 应用程序主窗口上调用的,它将使整个窗口变黑)。

几乎听起来事件处理程序没有正确连接。尝试在不透明度设置行上设置断点或右键单击 set_opacity 函数名称并选择“查找所有引用”,您应该会看到在 windowname.g.cs 文件中创建了一个事件处理程序。

于 2012-06-16T16:14:11.130 回答