티스토리 뷰

http://www.wpf-tutorial.com/commands/implementing-custom-commands/


이전에는 WPF에 미리 정의되어진 command들의 사용에 대한 다양한 방법들을 보았습니다.

추가적으로 command들을 사용자가 구현할 수 있습니다.


가장 쉬운 방법은 사용자의 command들을 포함하는 static class를 구현하는 것입니다.

각각의 command는 static field로 class에 추가되어집니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
 
        private void CommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
        {
            e.CanExecute = true;
 
        }
 
        private void CommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
        {
            Application.Current.Shutdown();
 
        }
    }
    public static class CustomCommands
    {
        public static readonly RoutedUICommand Exit = new RoutedUICommand(
            "Exit",
            "Exit",
            typeof(CustomCommands),
            new InputGestureCollection()
            {
                new KeyGesture(Key.F4, ModifierKeys.Shift)
            }
        );
    }
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<Window.CommandBindings>
        <CommandBinding Command="local:CustomCommands.Exit" CanExecute="CommandBinding_CanExecute" Executed="CommandBinding_Executed" />
    </Window.CommandBindings>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <Menu>
            <MenuItem Header="File">
                <MenuItem Command="local:CustomCommands.Exit"></MenuItem>
            </MenuItem>
        </Menu>
        <StackPanel Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center">
            <Button Command="local:CustomCommands.Exit">Exit</Button>
        </StackPanel>
    </Grid>
cs



응용프로그램의 메뉴와 버튼은 사용자 정의 Exit command를 사용합니다.

이 Exit command는 code-behid에서 CustomCommands class에 정의되어있습니다.

CanExecute에서 command가 항상 실행하도록 허용하고,

Executed에서 Application.Current.Shutdown(); Shudown() 메서드를 호출하여 응용프로그램을 종료합니다.

public static readonly RoutedUICommand Exit = new RoutedUICommand(
명령 텍스트/라벨  "Exit",
명령 이름         "Exit",
소유자 유형       typeof(CustomCommands),
           new InputGestureCollection()
            {
                new KeyGesture(Key.F4, ModifierKeys.Shift)
            }
        );

RoutedUICommand(command text/lable, command Name, owner type, InputGestureCollection);

InputGestureCollection에서 기본 shortcut을 정의합니다(여기서는 [shift] + [F4]).


'C# > WPF' 카테고리의 다른 글

WPF tutorial- The OpenFileDialog  (0) 2017.06.29
WPF tutorial - The MessageBox  (0) 2017.06.29
WPF tutorial - Using WPF commands  (0) 2017.06.29
WPF tutorial - The StringFormat property  (0) 2017.06.25
WPF tutorial - Value conversion with IValueConverter  (1) 2017.06.25
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함