2009-09-09 30 views
6

tôi đang cố gắng để đạt được những điều sau đây:Cách đặt ContextMenu của một mục bị ràng buộc?

<Style TargetType="ListBoxItem"> 
    <Setter Property="ContextMenu"> 
     <Setter.Value> 
      <ContextMenu> 
       <MenuItem Name="mnuEdit" Header="_Edit" Click="MenuItem_Click" /> 
      </ContextMenu> 
     </Setter.Value> 
    </Setter> 
<Style> 

Nhưng nó ném ngoại lệ sau đây:

Cannot add content of type 'System.Windows.Controls.ContextMenu' 
to an object of type 'System.Object'. 
Error at object 'System.Windows.Controls.ContextMenu' 
in markup file blah blah blah 

Trả lời

5

Hãy thử điều này thay vì:

<ContextMenu x:Key="contextMenu"> 
    <MenuItem Name="mnuEdit" Header="_Edit" Click="MenuItem_Click" /> 
</ContextMenu> 

<Style TargetType="ListBoxItem"> 
    <Setter Property="ContextMenu" Value="{DynamicResource contextMenu}" /> 
</Style> 
+0

ok, nhưng tại sao? Các thuộc tính khác có thể được cài đặt mà không cần sử dụng tài nguyên tĩnh hoặc động. – jrwren

+1

@jrwren, Điểm tốt. _guess_ của tôi là nếu bạn làm theo cách nó được hiển thị trong câu hỏi thì menu ngữ cảnh được tạo ra cho mỗi mục menu, có khả năng lãng phí khi bạn chỉ cần một. Tôi biết đó không phải là một lời giải thích kết luận. –

+1

Tôi rất thích một câu trả lời cụ thể. Biết lý do tại sao chắc chắn sẽ giúp tôi hiểu về WPF. – jrwren

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