티스토리 뷰

C#/WPF

WPF tutorial - The WPF ToolBar control

광그로 2017. 7. 1. 17:45

http://www.wpf-tutorial.com/common-interface-controls/toolbar-control/


WPF ToolBar는 일반적으로 ToolBarTray 컨트롤 내에 배치됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<Window.CommandBindings>
        <CommandBinding Command="New" CanExecute="CommandBinding_CanExecute" />
        <CommandBinding Command="Open" CanExecute="CommandBinding_CanExecute" />
        <CommandBinding Command="Save" CanExecute="CommandBinding_CanExecute" />
    </Window.CommandBindings>
 
    <DockPanel>
        <ToolBarTray DockPanel.Dock="Top">
            <ToolBar>
                <Button Command="New" Content="New" />
                <Button Command="Open" Content="Open" />
                <Button Command="Save" Content="Save" />
            </ToolBar>
            <ToolBar>
                <Button Command="Cut" Content="Cut" />
                <Button Command="Copy" Content="Copy" />
                <Button Command="Paste" Content="Paste" />
            </ToolBar>
        </ToolBarTray>
        <TextBox AcceptsReturn="True" />
    </DockPanel>
cs
1
2
3
4
private void CommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
        {
            e.CanExecute = true;
        }
cs

cut, copy, paste는 WPF가 자동으로 수행하지만, new, open, save과 같은 명령은 code-behind에서 항상 CanExecute를 처리해야합니다.


Images


WPF는 평범한 Button 컨트롤을 사용하기 때문에, toolbar에 icon을 추가하는 것은 매우 쉽습니다.

1
2
3
4
5
6
<Button Command="Paste" ToolTip="Paste from Windows Clipboard.">
     <StackPanel Orientation="Horizontal">
          <Image Source="/WpfTutorialSamples;component/Images/paste.png" />
          <TextBlock Margin="3,0,0,0">Paste</TextBlock>
     </StackPanel>
 </Button>
cs

ToolTip 속성을 이용하여 설명을 나타냅니다.

StackPanel을 이용하여 Image와 TextBlock이 공존할 수 있게 하였습니다.


Overflow


Button의 모음 대신, ToolBar를 사용하는 이유는 자동 오버플로우 헨들링입니다.

ToolBar에 충분한 공간이 없다면, WPF는 ToolBar의 우측에 위치한 화살표를 이용하여 메뉴에 액세스할 수 있게 합니다.

1
2
3
4
5
<ToolBar>
    <Button Command="Cut" Content="Cut" ToolBar.OverflowMode="Always" />
    <Button Command="Copy" Content="Copy" ToolBar.OverflowMode="AsNeeded" />
    <Button Command="Paste" Content="Paste" ToolBar.OverflowMode="Never" />
</ToolBar>
cs

ToolBar.OverflowMode 속성 중 Always, AsNeeded, Never 를 이용합니다.


Position


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<DockPanel>
        <ToolBarTray DockPanel.Dock="left" Orientation="Vertical">
            <ToolBar>
                <Button Command="New" Content="New" />
                <Button Command="Open" Content="Open" />
                <Button Command="Save" Content="Save" />
            </ToolBar>
            <ToolBar>
                <Button Command="Cut" Content="Cut" />
                <Button Command="Copy" Content="Copy" />
                <Button Command="Paste" Content="Paste" />
            </ToolBar>
        </ToolBarTray>
        <TextBox AcceptsReturn="True" />
    </DockPanel>
cs
<ToolBarTray DockPanel.Dock="left" Orientation="Vertical">
DockPanel과 Orientation 속성을 이용하여 상단, 좌, 우, 하단 등에도 위치할 수 있습니다.


Custom controls on the ToolBar



1
2
3
4
5
6
7
8
9
10
11
12
13
14
<DockPanel>
        <ToolBarTray DockPanel.Dock="Top" Orientation="Horizontal">
            <ToolBar>
                <Label>Font Size : </Label>
                <ComboBox>
                    <ComboBoxItem>10</ComboBoxItem>
                    <ComboBoxItem IsSelected="True">12</ComboBoxItem>
                    <ComboBoxItem>14</ComboBoxItem>
                    <ComboBoxItem>16</ComboBoxItem>
                </ComboBox>
            </ToolBar>
        </ToolBarTray>
        <TextBox AcceptsReturn="True" />
    </DockPanel>
cs



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

WPF tutorial - The Ribbon control  (0) 2017.07.02
WPF tutorial - The WPF StatusBar control  (0) 2017.07.01
WPF tutorial - The WPF ContextMenu  (0) 2017.07.01
WPF tutorial - The WPF Menu control  (0) 2017.06.29
WPF tutorial - The other dialogs  (0) 2017.06.29
공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함