Button안에 ContextMenu가 있고 좌클릭이던 우클릭이던 Contextmenu를 작동하도록 작성했는데
- 우클릭(Button) → 좌 또는 우클릭 (Contextmenu)를 해야
- 좌클릭(Button) → 좌 또는 우클릭 (Contextmenu)이 작동이 되네요
1번 과정을 하지 않으면 2번에서 Contextmenu클릭시 반응이 없네요.
<Button Content="Option" HorizontalAlignment="Center" VerticalAlignment="Center"
x:Name="OptionBtn"
Cursor="Hand" Width="163" Grid.Row="1"
DataContext="{Binding DataViewModel}" >
<Button.ContextMenu>
<ContextMenu x:Name="OptionContextmenu" >
<MenuItem Header="Edit" Command="{Binding Edit_Command}" />
<MenuItem Header="Add" Command="{Binding Add_Command}" />
<MenuItem Header="List" Command="{Binding List_Command}" />
</ContextMenu>
</Button.ContextMenu>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<i1:ChangePropertyAction TargetName="OptionContextmenu"
PropertyName="IsOpen"
Value="True"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
다음과 같은데 1번 행동을 무조건해야지 2번이 작동하네요 ㅠㅠ
1개의 좋아요
rkttu
#2
WPF 질문이어서 윈도우 데스크탑 카테고리로 글을 이동해드렸습니다.
2개의 좋아요
다음과 같이 스토리보드를 활용해도 됩니다.
<Button Grid.Row="2" Content="Option" HorizontalAlignment="Center" VerticalAlignment="Center"
x:Name="OptionBtn"
Cursor="Hand" Width="163">
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<BooleanAnimationUsingKeyFrames Storyboard.TargetName="OptionContextmenu"
Storyboard.TargetProperty="IsOpen">
<DiscreteBooleanKeyFrame KeyTime="00:00:00" Value="True"/>
</BooleanAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Button.Triggers>
<Button.ContextMenu>
<ContextMenu x:Name="OptionContextmenu">
<MenuItem Header="Edit"/>
<MenuItem Header="Add"/>
<MenuItem Header="List"/>
</ContextMenu>
</Button.ContextMenu>
</Button>
3개의 좋아요
보실분이 계실지 모르겠지만 일단 저는 아래코드처럼 해결했습니다!
xmlns:b="http://schemas.microsoft.com/xaml/behaviors"
<Button x:Name="MessageBtn" Style="{StaticResource menuButton}">
<StackPanel Orientation="Horizontal">
<fa:IconImage Icon="EnvelopeOpenText" Style="{StaticResource menuButtonIcon}" />
<TextBlock Style="{StaticResource menuButtonText}" Text="Messages" />
</StackPanel>
<b:Interaction.Triggers>
<b:EventTrigger EventName="Click">
<b:ChangePropertyAction TargetObject="{Binding ContextMenu, ElementName=MessageBtn}"
PropertyName="PlacementTarget" Value="{Binding ElementName=MessageBtn,Mode=OneWay}"/>
<b:ChangePropertyAction TargetObject="{Binding ContextMenu, ElementName=MessageBtn}"
PropertyName="IsOpen"
Value="True"/>
</b:EventTrigger>
</b:Interaction.Triggers>
<!-- ContextMenu -->
<Button.ContextMenu>
<ContextMenu >
<MenuItem Header="Menu1" Command="{Binding Menu1Command}"/>
<MenuItem Header="Menu2" />
<MenuItem Header="Menu3" />
</ContextMenu>
</Button.ContextMenu>
</Button>
5개의 좋아요