4
在應用程序上,我有一個帶有窗格和內容的拆分視圖控件。我想知道在窗格打開時是否可以使內容變暗,就好像我在splitview.Content上應用了75%的不透明蒙板。拆分視圖控件,打開窗格時打開內容
在此先感謝您的幫助
問候
在應用程序上,我有一個帶有窗格和內容的拆分視圖控件。我想知道在窗格打開時是否可以使內容變暗,就好像我在splitview.Content上應用了75%的不透明蒙板。拆分視圖控件,打開窗格時打開內容
在此先感謝您的幫助
問候
可以有多種選擇:
通過把一個半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
事件。