2009-05-08 27 views

Trả lời

5

Vâng, để thêm một MenuItem bạn sẽ cần một cái gì đó dọc theo những dòng:

var menuItem = new MenuItem() { Header = "Menu Name", Name = "Identifier", IsCheckable = true, IsChecked = visible }; 
menuItem.Click += new RoutedEventHandler(contextMenu_onClick); 
int position = contextMenu.Items.Add(menuItem); 

(nhưng bạn đã có thể đã nhận được điều này).

Bạn sẽ cần một số cách buộc mục menu vào thuộc tính - nhưng không thấy ứng dụng của bạn, tôi thực sự không thể đề xuất cách tốt nhất. Có thuộc tính Thẻ lưu trữ một đối tượng; thuộc tính Uid lưu trữ một chuỗi; thuộc tính Name cũng lưu trữ một chuỗi.

Trong khi:

menuItem.Visibility = Visibility.Visible; 

menuItem.Visibility = Visibility.Collapsed; 

nên chuyển đổi khả năng hiển thị của mặt hàng đó.

EDIT: Sử dụng Thu gọn sẽ ẩn mục menu và không đặt trước khoảng trống trong menu - bạn không thực sự muốn khoảng trống trong menu ngữ cảnh. (nhờ Botz3000 cho việc này)

Sau đó, trong mã của bạn thay đổi giá trị thuộc tính, bạn sẽ tìm thấy mục menu bạn muốn hiển thị/ẩn bằng liên kết tôi đã mô tả ở trên. Khi bạn có mặt hàng, bạn có thể chuyển đổi giá trị của nó:

menuItem.Visibility = menuItem.Visibility == Visibility.Visible ? Visibility.Collapsed : Visibility.Visible; 
+1

không hiển thị. Hiển thị tốt hơn? – Botz3000

+1

Cảm ơn - Tôi đã cập nhật câu trả lời – ChrisF

0

Bạn có chắc chắn muốn ẩn MenuItem? Nó là phổ biến hơn để vô hiệu hóa nó, sử dụng khuôn khổ chỉ huy của WPF:

<MenuItem Header="_MenuName" Command="{x:Static local:MyCommands.SomeCommand}" /> 

... 

<!-- In the menu item or any of its ancestors: --> 
<SomeControl.CommandBindings> 
    <CommandBinding Command="{x:Static local:MyCommands.SomeCommand}" Executed="Save_Executed" CanExecute="Save_CanExecture" /> 
</SomeControl.CommandBindings> 

WPF sẽ sử dụng kết quả của boolSave_CanExecute để xác định xem lệnh 's MenuItem hiện có thể thực hiện, và bật/tắt MenuItem cho phù hợp.

Các vấn đề liên quan