2014-03-19 11 views
1

組不同元素的不透明度,我想知道這是否是可能的:比窗口

  • 我有窗口(窗口1)以列表視圖。雙擊此列表視圖的元素(Element1)打開小彈出窗口(Window2)。
  • 我想元素1和窗口2不透明度設置爲1,但窗口1到0.2

窗口2是與ShowDialog的()的HasValue最上面開放,像

this.Opacity = 0.2; 
    selected.opacity = 1; 
    Window2.opacity = 1; 
    if(Window2.ShowDialog().HasValue()) 
     this.Opacity = 1; 

@EDIT: 主窗口中,被稱爲「窗口1」:

private void Border_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
     { 
      if (e.ClickCount == 2) 
      { 
       if (popup != null) 
        popup.Close(); 
       popup = new PopupWindow(ListView.SelectedItem as SelectedItem, sender as Border, this); 
       popup.Topmost = true; 
       ((Border)sender).Opacity = 1; 
       this.Opacity = 0.2; 
       popup.Opacity = 1; 
       if (popup.ShowDialog().HasValue) 
       { 
        this.Opacity = 1; 
       } 
      } 
     } 
+0

你試過了嗎? –

+0

是的。 Window1不透明度是0.2,只有彈出窗口(Window2)是1.我需要該元素也設置爲1;) – user1617141

+0

似乎你有一個點擊方法,當你點擊元素時打開彈出窗口。沒有從元素作爲參數的句柄? –

回答

1

不幸的是,你要實現的目標不能直接完成與WPF,因爲Opacity值是由子控件繼承的。從UIElement.Opacity Property頁面上MSDN:

不透明度從父元素應用上下來的元素樹子元素,但嵌套透明度設置了明顯的影響在各個子元素的屬性值不顯示。例如,如果列表具有50%(0.5)的不透明度,並且其列表項目之一具有其自己的不透明度設置爲20%(0.2),則該列表項目的淨可見不透明度將被渲染爲如10%( 0.1),但查詢時列表項Opacity屬性的屬性值仍然爲0.2。

然而,可能假冒您想要的外觀由內Window半不透明使某些元素,同時還具有Opacity="1.0"子元素。因此,嘗試從Window取出Opacity設置,並設置Background到看穿顏色是這樣的:

window.Background = new SolidColorBrush(Color.FromArgb(0, 0, 0, 0)); 

或者更簡單:

window.Background = Brushes.Transparent; 

使用的透明色和低Opacity組合某些用戶界面元素上的值應該會讓你最終得到你想要的。