点击某个按钮时触发了一个事件
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 :(得分: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
的透明度:
整个窗口不能设置不透明度,除非您在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
}
答案 1 :(得分:0)
这应该有一些效果(假设在WPF应用程序主窗口上调用它会使整个窗口变黑)。
几乎听起来事件处理程序没有正确连线。尝试在不透明度设置行上设置断点或右键单击set_opacity函数名称并选择“查找所有引用”,您应该看到在windowname.g.cs文件中创建了一个事件处理程序。