透明和非透明之间的WPF透明度和切换样式

时间:2011-02-09 17:50:05

标签: c# wpf

2个问题:

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

    修改(似乎无法回复)

    感谢alex,NVM

    关于Toggling Transparency,只要我在运行时将Window的'Background'属性从颜色设置为'Transparent',就可以了。

    关于切换样式,只需扩展你的代码alex,大概我可以做类似

    的事情
    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次修改

    谢谢你们,

    很抱歉让您感到困惑 - 我的第二个问题是因为我的数据网格有自己的风格(并且不从窗口继承)我需要根据当前状态(透明/非透明)设置其样式 - 所以我需要在运行时更改数据网格样式 - 现在因为这可以通过窗口完成,我可以假设它可以使用数据网格完成吗?

    由于

1 个答案:

答案 0 :(得分: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);