2011-02-09 85 views
0

两个问题之间切换风格:WPF透明度和透明和非透明

  1. 首先:
    是否可以切换一个WPF窗口透明度?任何指针非常感谢!
  2. 其次:
    我的窗口上的大多数控件从父窗口继承它们的Transparancy,但是我有一个带有自己样式的Datagrid控件 - 样式位于我引用的外部文件中(样式=“{DynamicResource MyDGStyle}” ).....在后面的xaml代码中,我可以切换样式吗? (理想情况下,我会使用样式触发器来实现这一点,但不要以为我可以)。

非常感谢

编辑(似乎无法回复)

感谢亚历克斯,NVM

关于绷透明度,只要我可以在运行时将Window的'Background'属性设置为'Transparent',这很好。

关于切换风格,只是延长你的代码亚历克斯,想必我可以这样做

void OnButtonPress() 
{ 
    var transparentStyle = Themes.CurrentTheme.MyDGNonTransparentStyle; 
    var nonTransparentStyle = Themes.CurrentTheme.MyDGNonTransparentStyle; 

    if (isTransparent) // Change to Non-Transparent 
     this.MyGrid.Style = (Style)this.FindResource(nonTransparentStyle); 
    else // Change to Transparent 
     this.MyGrid.Style = (Style)this.FindResource(nonTransparentStyle); 
} 

感谢

3编辑

谢谢你们,

对不起来迷惑你 - 我的第二个问题是因为我的DataGrid中有自己的风格(不从窗口继承)我需要根据当前状态(Transparent/Non-ransparent)设置其样式 - 所以我需要在运行时更改数据网格样式 - 现在,因为这可以通过一个窗口,我可以认为它可以完成一个数据网格?

感谢

回答

2

是否有可能切换WPF窗口透明度?

是的,这就是:

<Window WindowStyle="None" 
     AllowsTransparency="True" 
     Background="#88aa3366"> 
</Window/> 

坏消息是,你必须自己实现窗口标题的逻辑。 This article可能会有帮助。

在xaml代码后面可以切换样式吗?

的问题是有点不清楚,也许这会有所帮助:

var key = Themes.CurrentTheme.MyDGStyle; 
this.MyGrid.Style = (Style)this.FindResource(key); 
+2

我不认为你可以在运行时改变AllowsTransparency。 – NVM 2011-02-10 09:24:13