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