2016-11-20 46 views

回答

1

可以有多種選擇:

  • 通過把一個半TRANSPARANT暗控制(例如Grid)作爲應用「假的」不透明度SplitView.Content的頂層。

  • 使用黑色作爲Grid你的控制樹的SplitView.Content根對象,放一個輕Grid(白色或顏色過您的應用程序是)中,然後建立自己的內容的其餘部分。

內容的XAML:

<SplitView.Content> 
    <Grid Background="Black"> 
     <Grid 
      x:Name="OpacityGrid" 
      Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" 
      Opacity="1"> 
     ... 
     </Grid> 
    </Grid> 
</SplitView.Content> 
  • 設置頁面的根爲黑色,採用光控作爲SplitView.Content的根。這與以前的方法類似,但需要少一層控制。

一旦建立了結構,您可以根據您的SplitView.Pane的狀態將不透明度應用於燈光控制(或案例1的黑色頂層)。無論是在代碼中做背後:

private void HamburgerButton_Click(object sender, RoutedEventArgs e) 
{ 
    MySplitView.IsPaneOpen = !MySplitView.IsPaneOpen; 
    OpacityGrid.Opacity = MySplitView.IsPaneOpen ? 0.7 : 1; 
} 

或者使用轉換器:

public class BoolToOpacityConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, string language) 
    { 
     if (value is bool && (bool) value) 
      return 0.7; 
     return 1; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, string language) 
    { 
     throw new NotImplementedException(); 
    } 
} 

XAML:

<Grid 
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" 
    Opacity="{Binding IsPaneOpen, ElementName=MySplitView, Converter={StaticResource BoolToOpacityConverter}}" /> 


額外注:如果你想使用PaneOpened事件instea d點擊你的漢堡包圖標,你將會使用this trick,因爲沒有PaneOpened事件。