C#WPF使用不同窗口上的按钮控制标签不透明度

时间:2014-03-21 19:51:41

标签: c# wpf

我有一个小程序,它使用2个透明窗口。 为了定位它们,我添加了一个小的彩色标签。 我在两个透明的窗户上都有这个。 透明window1有2个按钮增加和减少不透明度。 此按钮适用于透明窗口1,但不适用于透明窗口。

 private void BtnIncreaseOpacity_Click(object sender, RoutedEventArgs e)
{
lblDrag.Opacity = 100;
win2.lblDrag2.Opacity = 100;
}

在公共部分类

TrackerMessage win2 = new TrackerMessage();

代码被接受,但不起作用。 所以我很确定这是在做一些与我想的不同的事情。

另一个问题是类似的。 当透明window1上的计时器达到0时,透明的windows2(win2)需要使其标签可见。 但这就是更多相同的问题,因为现在你无法从window2上的window1访问任何东西

所以问题是,我做错了什么。

1 个答案:

答案 0 :(得分:0)

实际上,两个Opacity属性都应绑定到视图模型,然后按钮的命令会修改支持属性(允许UI更新)。

那就是说,至少你应该让每个窗口处理自己的UI(我怀疑这是问题所在)。不要直接为win2设置属性,而是让它调用一个函数:

win2.SetOpacity(100);

SetOpacity的样子:

public void SetOpacity(int newValue)
{
   lblDrag2.Opacity = newValue;
}

您可能还需要执行Dispatcher.BeginInvoke(因为这是从其他窗口的UI线程调用的)。在这种情况下,函数是:

public void SetOpacity(int newValue)
{
   Dispatcher.BeginInvoke(new Action(() =>
   {
      lblDrag2.Opacity = newValue;
   }));
}

让我知道我是否可以澄清任何事情!