2016-11-20 11 views
4

アプリケーションでは、分割ビューコントロールにペインとコンテンツがあります。あたかも私がsplitview.Contentに75%不透明マスクを適用しているかのように、ペインが開いているときにコンテンツを暗くすることができるかどうかを知りたいと思います。あなたの助けを事前にスプリットビューコントロール、ペインが開いているときに内容が暗くなる

おかげ

よろしく

答えて

1

複数のオプションがあります:

  • は、半transparantダーク制御(例えばGrid)を置くことによって、「偽」不透明度を適用します。 SplitView.Contentの最上位層。

  • SplitView.Contentであなたのコントロールツリーのルートオブジェクトとして黒Gridを使用して、あなたのコンテンツの残りの部分を構築し、それに光Grid(白またはその今までで、アプリの色)を入れて。

コンテンツXAML:

<SplitView.Content> 
    <Grid Background="Black"> 
     <Grid 
      x:Name="OpacityGrid" 
      Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" 
      Opacity="1"> 
     ... 
     </Grid> 
    </Grid> 
</SplitView.Content> 
  • は黒にページのルートを設定して、あなたのSplitView.Contentのルートとして光制御を使用しています。これは以前のアプローチに似ていますが、コントロールのレイヤーを1つ少なくする必要があります。

構造体が設定されたら、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 event insteaあなたのハンバーガーのアイコンをクリックすると、はPaneOpenedというイベントがないので、this trickを使用することになります。

関連する問題