我有一个小程序,它使用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访问任何东西
所以问题是,我做错了什么。
答案 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;
}));
}
让我知道我是否可以澄清任何事情!