下拉打開時,我需要在某些元素上添加背景。在WPF中添加BackDrop
我的意思 - 在引導時打開模式窗口 - 底色變得又黑又不可點擊(默認設置)(Live example)
我應該補充上下拉打開事件觸發,這將在一定添加一些背景(背景)元素並禁用此元素?
下拉打開時,我需要在某些元素上添加背景。在WPF中添加BackDrop
我的意思 - 在引導時打開模式窗口 - 底色變得又黑又不可點擊(默認設置)(Live example)
我應該補充上下拉打開事件觸發,這將在一定添加一些背景(背景)元素並禁用此元素?
我找到了解決方案。
我剛剛用ZIndex和Background添加了一些網格。
這個網格變得可見時,切換按鈕被選中,並在另一種情況下不可見(當點擊這個網格(覆蓋) - 然後我強制切換按鈕被點擊 - 這是我設法隱藏網格...東西簡單到模態背景的Bootstrap行爲)。
<Grid x:Name="Overlay" Panel.ZIndex="2" Grid.Row="1">
<Grid.Background>
<SolidColorBrush Color="Black" Opacity=".3"/>
</Grid.Background>
<Grid.Style>
<Style TargetType="Grid">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsChecked, ElementName=FiltersButton}" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
<Grid.Triggers>
<EventTrigger RoutedEvent="UIElement.MouseDown">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<BooleanAnimationUsingKeyFrames Storyboard.TargetName="FiltersButton" Storyboard.TargetProperty="(ToggleButton.IsChecked)">
<DiscreteBooleanKeyFrame KeyTime="0:0:00.0" Value="False" />
</BooleanAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Grid.Triggers>
</Grid>
也許有綁定的知名度邏輯另一種方式(更簡單或用更少的代碼)...
這裏是一個非常強大的模擬你想要的效果。
XAML:
<Grid>
<TextBlock Text="SomeContent" />
<Button Content="Click"
HorizontalAlignment="Center"
VerticalAlignment="Bottom"
Click="Button_Click">
<Button.ContextMenu>
<ContextMenu Opened="ContextMenu_Opened"
Closed="ContextMenu_Closed">
<MenuItem Header="Test" />
</ContextMenu>
</Button.ContextMenu>
</Button>
<Grid x:Name="overlay"
Visibility="Collapsed"
Background="#50000000" />
</Grid>
CS:
void Button_Click(object sender, RoutedEventArgs e) => ((Button)sender).ContextMenu.IsOpen = true;
void ContextMenu_Opened(object sender, RoutedEventArgs e) => overlay.Visibility = Visibility.Visible;
void ContextMenu_Closed(object sender, RoutedEventArgs e) => overlay.Visibility = Visibility.Collapsed;
下面是如何工作的:(?背景)
想法是創建半透明層,其菜單打開時顯示。
應該很容易,以改善這一點:使用綁定,添加效果等
有WPF中沒有這樣的術語(背景?)。菜單是一種特殊的窗口,看起來你希望它像一個普通的模式窗口(禁止父窗口交互,並可能提供一些視覺信號)。那爲什麼要用菜單?以模態方式打開另一個窗口,並使其看起來像菜單*。 – Sinatr