728x90
반응형
728x170
■ ControlTemplate 엘리먼트를 사용해 ContextMenu 엘리먼트를 정의하는 방법을 보여준다.
▶ MainWindow.xaml
<Window x:Class="TestProject.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="800"
Height="600"
Title="TestProject"
FontFamily="나눔고딕코딩"
FontSize="16">
<Window.Resources>
<Color x:Key="ControlLightColorKey">White</Color>
<Color x:Key="ControlMediumColorKey">#ff7381f9</Color>
<Color x:Key="BorderMediumColorKeyKey">#ff888888</Color>
<LinearGradientBrush x:Key="MenuPopupLinearGradientBrushKey"
StartPoint="0.5 0"
EndPoint="0.5 1">
<GradientStop Offset="0" Color="{DynamicResource ControlLightColorKey }" />
<GradientStop Offset="0.5" Color="{DynamicResource ControlMediumColorKey}" />
<GradientStop Offset="1" Color="{DynamicResource ControlLightColorKey }" />
</LinearGradientBrush>
<Style TargetType="{x:Type ContextMenu}">
<Setter Property="SnapsToDevicePixels" Value="True" />
<Setter Property="OverridesDefaultStyle" Value="True" />
<Setter Property="Grid.IsSharedSizeScope" Value="true" />
<Setter Property="HasDropShadow" Value="True" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ContextMenu}">
<Border Name="Border"
Background="{StaticResource MenuPopupLinearGradientBrushKey}"
BorderThickness="1">
<Border.BorderBrush>
<SolidColorBrush Color="{StaticResource BorderMediumColorKeyKey}" />
</Border.BorderBrush>
<StackPanel
IsItemsHost="True"
KeyboardNavigation.DirectionalNavigation="Cycle" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="HasDropShadow" Value="true">
<Setter
TargetName="Border"
Property="Padding"
Value="0 3 0 3" />
<Setter
TargetName="Border"
Property="CornerRadius"
Value="4" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<TextBox
HorizontalAlignment="Center"
VerticalAlignment="Center"
Width="200"
Height="25"
BorderThickness="1"
BorderBrush="Black"
VerticalContentAlignment="Center">
<TextBox.ContextMenu>
<ContextMenu>
<MenuItem Header="메뉴 1" />
<MenuItem Header="메뉴 2" />
<MenuItem Header="메뉴 3" />
</ContextMenu>
</TextBox.ContextMenu>
</TextBox>
</Window>
728x90
반응형
그리드형(광고전용)
'C# > WPF' 카테고리의 다른 글
[C#/WPF] ControlTemplate 엘리먼트 : Frame 엘리먼트 정의하기 (0) | 2023.01.27 |
---|---|
[C#/WPF] ControlTemplate 엘리먼트 : Expander 엘리먼트 정의하기 (0) | 2023.01.25 |
[C#/WPF] ControlTemplate 엘리먼트 : DocumentViewer 엘리먼트 정의하기 (0) | 2023.01.25 |
[C#/WPF] ControlTemplate 엘리먼트 : DatePicker 엘리먼트 정의하기 (0) | 2023.01.25 |
[C#/WPF] ControlTemplate 엘리먼트 : DataGrid 엘리먼트 정의하기 (0) | 2023.01.24 |
[C#/WPF] ControlTemplate 엘리먼트 : ComboBox 엘리먼트 정의하기 (0) | 2023.01.23 |
[C#/WPF] ControlTemplate 엘리먼트 : CheckBox 엘리먼트 정의하기 (0) | 2023.01.23 |
[C#/WPF] ControlTemplate 엘리먼트 : Calendar 엘리먼트 정의하기 (0) | 2023.01.22 |
[C#/WPF] ControlTemplate 엘리먼트 : 비주얼 상태와 트리거를 사용해 Button 엘리먼트 정의하기 (0) | 2023.01.22 |
[C#/WPF] Control 클래스 : 사용자 지정 가능한 모양을 가진 컨트롤 만들기 (0) | 2023.01.21 |
댓글을 달아 주세요