MenuFlyout 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
명령 메뉴를 표시하는 플라이아웃을 나타냅니다.
/// [Microsoft.UI.Xaml.Markup.ContentProperty(Name="Items")]
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class MenuFlyout : FlyoutBase
[Microsoft.UI.Xaml.Markup.ContentProperty(Name="Items")]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public class MenuFlyout : FlyoutBase
Public Class MenuFlyout
Inherits FlyoutBase
<MenuFlyout>
oneOrMoreItems
</MenuFlyout>
- 상속
- 파생
- 특성
예제
팁
자세한 정보, 디자인 지침 및 코드 예제는 메뉴 및 상황에 맞는 메뉴를 참조하세요.
WinUI 3 갤러리 앱에는 대부분의 WinUI 3 컨트롤, 기능 및 기능의 대화형 예제가 포함되어 있습니다. Microsoft Store에서 앱을 다운로드하거나 GitHub에서 소스 코드를 가져오세요.
다음은 MenuFlyout 클래스 를 만들고 대부분의 컨트롤에서 사용할 수 있는 속성인 ContextFlyout 속성을 사용하여 MenuFlyout 클래스 를 상황에 맞는 메뉴로 표시하는 예제입니다.
<Rectangle Height="100" Width="100">
<Rectangle.ContextFlyout>
<MenuFlyout>
<MenuFlyoutItem Text="Change color" Click="ChangeColorItem_Click" />
</MenuFlyout>
</Rectangle.ContextFlyout>
<Rectangle.Fill>
<SolidColorBrush x:Name="rectangleFill" Color="Red" />
</Rectangle.Fill>
</Rectangle>
private void ChangeColorItem_Click(object sender, RoutedEventArgs e)
{
// Change the color from red to blue or blue to red.
if (rectangleFill.Color == Windows.UI.Colors.Red)
{
rectangleFill.Color = Windows.UI.Colors.Blue;
}
else
{
rectangleFill.Color = Windows.UI.Colors.Red;
}
}
다음 예제는 거의 동일하지만 ContextFlyout 속성을 사용하여 MenuFlyout 클래스를 상황에 맞는 메뉴로 표시하는 대신 FlyoutBase.ShowAttachedFlyout 속성을 사용하여 메뉴로 표시합니다.
<Rectangle
Height="100" Width="100"
Tapped="Rectangle_Tapped">
<FlyoutBase.AttachedFlyout>
<MenuFlyout>
<MenuFlyoutItem Text="Change color" Click="ChangeColorItem_Click" />
</MenuFlyout>
</FlyoutBase.AttachedFlyout>
<Rectangle.Fill>
<SolidColorBrush x:Name="rectangleFill" Color="Red" />
</Rectangle.Fill>
</Rectangle>
private void Rectangle_Tapped(object sender, TappedRoutedEventArgs e)
{
FlyoutBase.ShowAttachedFlyout((FrameworkElement)sender);
}
private void ChangeColorItem_Click(object sender, RoutedEventArgs e)
{
// Change the color from red to blue or blue to red.
if (rectangleFill.Color == Windows.UI.Colors.Red)
{
rectangleFill.Color = Windows.UI.Colors.Blue;
}
else
{
rectangleFill.Color = Windows.UI.Colors.Red;
}
}
이 예제에서는 앱의 변경 조건에 따라 런타임에 메뉴 항목을 추가하고 제거하는 방법을 보여줍니다.
<StackPanel Margin="40" Width="220">
<Rectangle x:Name="Rect1" Height="100" Width="200"
Stroke="Black" StrokeThickness="1" Fill="White">
<Rectangle.ContextFlyout>
<MenuFlyout x:Name="RectangleColorMenu"/>
</Rectangle.ContextFlyout>
</Rectangle>
<StackPanel>
<TextBlock TextWrapping="WrapWholeWords"
Text="Check colors to include in the menu, then choose a color from the context menu on the rectangle."/>
<CheckBox Content="Blue" Click="CheckBox_Click" Tag="blue"/>
<CheckBox Content="Green" Click="CheckBox_Click" Tag="green"/>
<CheckBox Content="Red" Click="CheckBox_Click" Tag="red"/>
<CheckBox Content="Yellow" Click="CheckBox_Click" Tag="yellow"/>
</StackPanel>
</StackPanel>
private void CheckBox_Click(object sender, RoutedEventArgs e)
{
// Using the Tag property lets you localize the display name
// without affecting functionality.
var cb = (CheckBox)sender;
if (cb.IsChecked == true)
{
AddMenuItem(cb.Tag.ToString(), cb.Content.ToString());
}
else
{
RemoveMenuItem(cb.Content.ToString());
}
}
private void AddMenuItem(string colorString, string locColorName)
{
// Set the color.
Color newColor = Colors.Blue;
if (colorString == "green")
newColor = Colors.Green;
else if (colorString == "red")
newColor = Colors.Red;
else if (colorString == "yellow")
newColor = Colors.Yellow;
// Create the menu item.
var newMenuItem = new MenuFlyoutItem();
newMenuItem.Text = locColorName;
newMenuItem.Click += (s, e1) =>
{
Rect1.Fill = new SolidColorBrush(newColor);
};
// Add the item to the menu.
RectangleColorMenu.Items.Add(newMenuItem);
// Sort the menu so it's always consistent.
var orderedItems = RectangleColorMenu.Items.OrderBy(i => ((MenuFlyoutItem)i).Text).ToList();
RectangleColorMenu.Items.Clear();
foreach (var item in orderedItems)
{
RectangleColorMenu.Items.Add(item);
}
}
private void RemoveMenuItem(string locColorName)
{
// Get any menu items to remove and remove them.
var items = RectangleColorMenu.Items.Where(i => ((MenuFlyoutItem)i).Text == locColorName);
foreach (MenuFlyoutItem item in items)
{
RectangleColorMenu.Items.Remove(item);
}
}
설명
팁
자세한 정보, 디자인 지침 및 코드 예제는 메뉴 및 상황에 맞는 메뉴를 참조하세요.
MenuFlyout은 사용자가 현재 수행하는 작업과 관련된 명령 또는 옵션 목록을 일시적으로 표시합니다.
![메뉴 플라이아웃 컨트롤](microsoft.ui.xaml.controls/images/controls/menuflyout.png?view=windows-app-sdk-1.1)
Flyout 컨트롤을 사용하여 단일 항목을 표시하고 MenuFlyout 컨트롤을 사용하여 항목 메뉴를 표시합니다. 자세한 내용은 메뉴 및 상황에 맞는 메뉴를 참조하세요.
MenuFlyout 컨트롤은 Button.Flyout 속성의 값으로 사용할 수 있습니다. 일반적으로 페이지의 UI 정의의 일부로 XAML에서 설정됩니다. 단추 는 전용 Flyout 속성이 있는 유일한 컨트롤입니다. Button.Flyout으로 설정하면 단추가 탭되거나 호출될 때 MenuFlyout이 표시됩니다.
MenuFlyout을 다른 컨트롤과 콘텐츠 메뉴로 연결하려면 모든 UIElement에서 사용할 수 있는 ContextFlyout 속성을 사용합니다.
FlyoutBase.AttachedFlyout 연결된 속성을 사용하여 MenuFlyout을 다른 컨트롤과 일반 메뉴로 연결할 수 있습니다. FlyoutBase.AttachedFlyout을 사용하여 MenuFlyout을 다른 UI 요소에 할당하는 경우 ShowAt 메서드 또는 정적 ShowAttachedFlyout 메서드를 호출하여 플라이아웃을 표시해야 합니다.
컨트롤 스타일 및 템플릿
기본 스타일 및 ControlTemplate 을 수정하여 컨트롤에 고유한 모양을 지정할 수 있습니다. 컨트롤의 스타일 및 템플릿을 수정하는 방법에 대한 자세한 내용은 XAML 스타일을 참조하세요. 컨트롤의 모양을 정의하는 기본 스타일, 템플릿 및 리소스가 파일에 포함 generic.xaml
됩니다. 디자인 목적으로 는 generic.xaml
Windows 앱 SDK NuGet 패키지와 함께 설치됩니다. 기본적으로 이 위치는 \Users\<username>\.nuget\packages\microsoft.windowsappsdk\<version>\lib\uap10.0\Microsoft.UI\Themes\generic.xaml
입니다. 다른 버전의 SDK의 스타일 및 리소스에는 다른 값이 있을 수 있습니다.
XAML에는 컨트롤 템플릿을 수정하지 않고 다른 시각적 상태에서 컨트롤의 색을 수정하는 데 사용할 수 있는 리소스도 포함되어 있습니다. 이러한 리소스를 수정하는 것은 Background 및 Foreground와 같은 속성을 설정하는 것이 좋습니다. 자세한 내용은 XAML 스타일 문서의 경량 스타일 섹션을 참조하세요.
생성자
MenuFlyout() |
MenuFlyout 클래스의 새 instance 초기화합니다. |
속성
AllowFocusOnInteraction |
사용자가 상호 작용할 때 요소가 자동으로 포커스를 가져오는지 여부를 나타내는 값을 가져오거나 설정합니다. (다음에서 상속됨 FlyoutBase) |
AllowFocusWhenDisabled |
컨트롤이 비활성화될 때 포커스를 받을 수 있는지 여부를 지정하는 값을 가져오거나 설정합니다. (다음에서 상속됨 FlyoutBase) |
AreOpenCloseAnimationsEnabled |
플라이아웃을 열거나 닫을 때 애니메이션이 재생되는지 여부를 나타내는 값을 가져오거나 설정합니다. (다음에서 상속됨 FlyoutBase) |
Dispatcher |
항상 Windows 앱 SDK 앱에서 를 반환 |
DispatcherQueue |
|
ElementSoundMode |
소리를 재생하는지 여부에 대한 컨트롤의 기본 설정을 지정하는 값을 가져오거나 설정합니다. (다음에서 상속됨 FlyoutBase) |
InputDevicePrefersPrimaryCommands |
플라이아웃을 여는 데 사용되는 입력 디바이스가 보조 명령을 쉽게 열지 않는지 여부를 나타내는 값을 가져옵니다. (다음에서 상속됨 FlyoutBase) |
IsConstrainedToRootBounds |
플라이아웃이 XAML 루트의 범위 내에 표시되는지 여부를 나타내는 값을 가져옵니다. 이 속성은 Windows 앱 SDK 앱의 경우 항상 true입니다. (다음에서 상속됨 FlyoutBase) |
IsOpen |
플라이아웃이 열려 있는지 여부를 나타내는 값을 가져옵니다. (다음에서 상속됨 FlyoutBase) |
Items |
메뉴의 콘텐츠를 생성하는 데 사용되는 컬렉션을 가져옵니다. |
LightDismissOverlayMode |
광원 해제 UI 외부 영역이 어둡게 표시되는지 여부를 지정하는 값을 가져오거나 설정합니다. (다음에서 상속됨 FlyoutBase) |
MenuFlyoutPresenterStyle |
MenuFlyout을 렌더링할 때 사용되는 스타일을 가져오거나 설정합니다. |
MenuFlyoutPresenterStyleProperty |
MenuFlyoutPresenterStyle 종속성 속성을 식별합니다. |
OverlayInputPassThroughElement |
플라이아웃 오버레이 아래에 있는 경우에도 포인터 입력 이벤트를 수신해야 하는 요소를 가져오거나 설정합니다. (다음에서 상속됨 FlyoutBase) |
Placement |
배치 대상과 관련하여 플라이아웃에 사용할 기본 배치를 가져오거나 설정합니다. (다음에서 상속됨 FlyoutBase) |
ShouldConstrainToRootBounds |
플라이아웃이 XAML 루트의 범위 내에 표시되어야 하는지 여부를 나타내는 값을 가져오거나 설정합니다. (다음에서 상속됨 FlyoutBase) |
ShowMode |
플라이아웃이 표시되면 동작하는 방식을 나타내는 값을 가져오거나 설정합니다. (다음에서 상속됨 FlyoutBase) |
SystemBackdrop |
이 플라이아웃에 적용할 시스템 배경을 가져오거나 설정합니다. 배경은 플라이아웃 콘텐츠 뒤에 렌더링됩니다. (다음에서 상속됨 FlyoutBase) |
Target |
플라이아웃의 배치 대상으로 사용할 요소를 가져옵니다. (다음에서 상속됨 FlyoutBase) |
XamlRoot |
이 플라이아웃을 볼 XamlRoot를 가져오거나 설정합니다. (다음에서 상속됨 FlyoutBase) |
메서드
이벤트
Closed |
플라이아웃이 숨겨져 있을 때 발생합니다. (다음에서 상속됨 FlyoutBase) |
Closing |
플라이아웃이 숨겨지기 시작할 때 발생합니다. (다음에서 상속됨 FlyoutBase) |
Opened |
플라이아웃이 표시되면 발생합니다. (다음에서 상속됨 FlyoutBase) |
Opening |
플라이아웃이 표시되기 전에 발생합니다. (다음에서 상속됨 FlyoutBase) |
적용 대상
추가 정보
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기