Cấp bậc tác giả:

DOTNET

Hướng dẫn làm Menu trong WPF

Được viết bởi QuangIT ngày 14/09/2012 lúc 05:13 PM
ontrol Menu được lấy từ HeaderedItemsControl. Nó được xếp theo chiều ngang(horizontally) và được vẽ ra trên nền màu xám. Thuộc tính duy nhất được thêm vào trong ItemsControl là IsMainMenu. Control này sẽ được kích hoạt khi nhấn phím tắt F10 hoặc phím Alt
  • 0
  • 13329

Hướng dẫn làm Menu trong WPF

Menu

Control Menu được lấy từ HeaderedItemsControl. Nó được xếp theo chiều ngang(horizontally) và được vẽ ra trên nền màu xám. Thuộc tính duy nhất được thêm vào trong ItemsControl là IsMainMenu. Control này sẽ được kích hoạt khi nhấn phím tắt F10 hoặc phím Alt



 
<Menu IsMainMenu="True">
    <MenuItem Header="_File" />
    <MenuItem Header="_Edit" />
    <MenuItem Header="_View" />
    <MenuItem Header="_Window" />
    <MenuItem Header="_Help" />
</Menu>

MenuItem

MenuItem là HeaderedItemsControl . Nội dung của thuộc tính Header là tiêu đề của trình đơn. Các Items của một MenuItems là SubMenu. Thuộc tính Icon làm chú thích cho nội dung thứ hai bên trái. Điều này thường được sử dụng để vẽ một hình ảnh nhỏ. Nhưng nó có thể được sử dụng cho kiểu nội dung.

Bạn có thể xác định một phím tắt bằng cách thêm một gạch dưới phía trước của ký tự.


<MenuItem Header="_Edit">
    <MenuItem Header="_Cut" Command="Cut">
        <MenuItem.Icon>
            <Image Source="Images/cut.png" />
        </MenuItem.Icon>
    </MenuItem>
    <MenuItem Header="_Copy" Command="Copy">
        <MenuItem.Icon>
            <Image Source="Images/copy.png" />
        </MenuItem.Icon>
    </MenuItem>
    <MenuItem Header="_Paste" Command="Paste">
        <MenuItem.Icon>
            <Image Source="Images/paste.png" />
        </MenuItem.Icon>
    </MenuItem>
</MenuItem>


Checkable MenuItems

Bạn có thể làm cho một checkable trong MenuItem bằng cách thiết lập thuộc tính IsCheckable là true. Trạng thái kiểm tra có thể được truy vấn bởi thuộc tính IsChecked . Để thông báo khi kiểm tra thay đổi trạng thái, bạn có thể thêm một xử lý thuộc tính Checked và Unchecked.


<MenuItem Header="_Debug">
    <MenuItem Header="Enable Debugging" IsCheckable="True" />
</MenuItem>


Separator

Separator là một điều khiển đơn giản để nhóm các menuItem. Nó trả lại dòng ngang. Nó cũng có thể được sử dụng trong ToolBar và StatusBar.


<Menu>
    <MenuItem Header="_File">
        <MenuItem Header="_New..." />
        <Separator />
        <MenuItem Header="_Open..." />
        <Separator />
        <MenuItem Header="_Save" />
        <MenuItem Header="_Save As..." />
        <Separator />
        <MenuItem Header="_Exit" />
    </MenuItem>
</Menu>


Callbacks

Bạn có thể đăng ký callback đến mọi MenuItem bằng cách thêm sự kiện Click

<Menu>
    <MenuItem Header="_File">
        <MenuItem Header="_New..."  Click="New_Click"/>
    </MenuItem>
</Menu>
 
private void New_Click(object sender, RoutedEventArgs e)
{
    MessageBox.Show("You clicked 'New...'");
}


Làm thế nào ràng buộc MenuItem động sử dụng MVVM

Nếu bạn đang sử dụng mô hình model-view-viewmodel, bạn muốn tự động xác định các lệnh trình đơn có sẵn trong mã của bạn và sau đó ràng buộc chúng vào một MenuItem Control. Code sau đây cho bạn thấy làm thế nào:

<Menu>
    <Menu.Resources>
        <Style x:Key="ThemeMenuItemStyle" TargetType="MenuItem">
           <Setter Property="Header" Value="{Binding Name}"></Setter>
           <Setter Property="Command" Value="{Binding ActivateCommand}"/>
           <Setter Property="IsChecked" Value="{Binding IsActive}" />
           <Setter Property="IsCheckable" Value="True"/>
        </Style>
    </Menu.Resources>
    <MenuItem Header="Themes" ItemsSource="{Binding Themes}" 
              ItemContainerStyle="{StaticResource ThemeMenuItemStyle}"  />
</Menu>


Phím tắt

Để thêm một phím tắt đến một mục menu, thêm "_" ở phía trước của ký tự bạn muốn sử dụng để làm phím nóng của bạn. Tự động cài đặt InputGestureText đến giá trị thích hợp. Nhưng bạn cũng có thể ghi đè lên các văn bản được đề xuất bằng cách thiết lập sở hữu một văn bản lựa chọn.

Nguồn bài viết: Dngaz.com

BÌNH LUẬN BÀI VIẾT

Bài viết mới nhất

LIKE BOX

Bài viết được xem nhiều nhất

HỌC HTML