在应用程序上,我有一个带有窗格和内容的Split View控件。我想知道当窗格打开时是否可以使内容变暗,就像我在splitview.Content上应用75%不透明蒙版一样。
提前感谢您的帮助
此致
答案 0 :(得分:1)
有多种选择:
申请"假"通过将半透明黑暗控件(例如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
活动而不是点击汉堡包图标,那么您就可以使用this trick,因为没有PaneOpened
活动