728x90
반응형
728x170
▶ MainPage.xaml
<Page x:Class="TestProject.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
FontFamily="나눔고딕코딩"
FontSize="16">
<Page.Resources>
<muxc:CommandBarFlyout x:Name="commandBarFlyout"
Placement="Right">
<AppBarButton
Icon="Share"
Label="공유"
ToolTipService.ToolTip="공유"
Click="appBarButton_Click" />
<AppBarButton
Icon="Save"
Label="저장"
ToolTipService.ToolTip="Save"
Click="appBarButton_Click" />
<AppBarButton
Icon="Delete"
Label="삭제"
ToolTipService.ToolTip="Delete"
Click="appBarButton_Click" />
<muxc:CommandBarFlyout.SecondaryCommands>
<AppBarButton
Label="크기 조정"
Click="appBarButton_Click" />
<AppBarButton
Label="이동"
Click="appBarButton_Click" />
</muxc:CommandBarFlyout.SecondaryCommands>
</muxc:CommandBarFlyout>
</Page.Resources>
<Grid>
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Spacing="10">
<Button
Padding="0"
ContextRequested="button_ContextRequested"
Click="button_Click">
<Image Name="image"
Height="300"
Source="/IMAGE/rainier.jpg" />
</Button>
<TextBlock Name="textBlock"
Text="" />
</StackPanel>
</Grid>
</Page>
728x90
▶ MainPage.xaml.cs
using Windows.Foundation;
using Windows.Foundation.Metadata;
using Windows.Graphics.Display;
using Windows.UI.ViewManagement;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Input;
namespace TestProject
{
/// <summary>
/// 메인 페이지
/// </summary>
public sealed partial class MainPage : Page
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - MainPage()
/// <summary>
/// 생성자
/// </summary>
public MainPage()
{
InitializeComponent();
#region 윈도우 크기를 설정한다.
double width = 800d;
double height = 600d;
double dpi = (double)DisplayInformation.GetForCurrentView().LogicalDpi;
ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize;
Size windowSize = new Size(width * 96d / dpi, height * 96d / dpi);
ApplicationView.PreferredLaunchViewSize = windowSize;
Window.Current.Activate();
ApplicationView.GetForCurrentView().TryResizeView(windowSize);
#endregion
#region 윈도우 제목을 설정한다.
ApplicationView.GetForCurrentView().Title = "CommandBarFlyout 엘리먼트 사용하기";
#endregion
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Private
//////////////////////////////////////////////////////////////////////////////// Event
#region 앱바 버튼 클릭시 처리하기 - appBarButton_Click(sender, e)
/// <summary>
/// 앱바 버튼 클릭시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void appBarButton_Click(object sender, RoutedEventArgs e)
{
AppBarButton button = sender as AppBarButton;
this.textBlock.Text = $"메뉴를 클릭했습니다 : {button.Label}";
}
#endregion
#region 버튼 컨텍스트 메뉴 요청시 처리하기 - button_ContextRequested(element, e)
/// <summary>
/// 버튼 컨텍스트 메뉴 요청시 처리하기
/// </summary>
/// <param name="element">엘리먼트</param>
/// <param name="e">이벤트 인자</param>
private void button_ContextRequested(UIElement element, ContextRequestedEventArgs e)
{
ShowMenu(false);
}
#endregion
#region 버튼 클릭시 처리하기 - button_Click(sender, e)
/// <summary>
/// 버튼 클릭시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void button_Click(object sender, RoutedEventArgs e)
{
Button button = sender as Button;
ShowMenu(button.IsPointerOver);
}
#endregion
//////////////////////////////////////////////////////////////////////////////// Function
#region 메뉴 표시하기 - ShowMenu(isTransient)
/// <summary>
/// 메뉴 표시하기
/// </summary>
/// <param name="isTransient">일시 여부</param>
private void ShowMenu(bool isTransient)
{
if(ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 7))
{
FlyoutShowOptions option = new FlyoutShowOptions
{
ShowMode = isTransient ? FlyoutShowMode.Transient : FlyoutShowMode.Standard,
Placement = FlyoutPlacementMode.RightEdgeAlignedTop
};
this.commandBarFlyout.ShowAt(this.image, option);
}
else
{
this.commandBarFlyout.ShowAt(this.image);
}
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
'C# > UWP' 카테고리의 다른 글
[C#/UWP] MenuFlyout 엘리먼트 : 아이콘과 키보드 가속기 사용하기 (0) | 2021.07.09 |
---|---|
[C#/UWP] MenuFlyout 엘리먼트 : 아이콘 사용하기 (0) | 2021.07.09 |
[C#/UWP] MenuFlyout 엘리먼트 : 계단식 메뉴 사용하기 (0) | 2021.07.09 |
[C#/UWP] MenuFlyout 엘리먼트 : ToggleMenuFlyoutItem/MenuFlyoutSeparator 객체 사용하기 (0) | 2021.07.09 |
[C#/UWP] MenuFlyout 엘리먼트 : AppBarButton 객체에서 사용하기 (0) | 2021.07.09 |
[C#/UWP] CommandBarFlyout 엘리먼트 사용하기 (0) | 2021.07.09 |
[C#/UWP] MenuBar 엘리먼트 : 하위 메뉴, 분리자, 라디오 항목 사용하기 (0) | 2021.07.09 |
[C#/UWP] MenuBar 엘리먼트 : 메뉴에서 키보드 가속기 사용하기 (0) | 2021.07.09 |
[C#/UWP] MenuBar 엘리먼트 사용하기 (0) | 2021.07.09 |
[C#/UWP] CommandBar 엘리먼트 사용하기 (0) | 2021.07.08 |
[C#/UWP] AppBarToggleButton 엘리먼트 : Style 속성 사용하기 (0) | 2021.07.08 |
댓글을 달아 주세요