2009-04-02 10 views
7

Tôi có một số biểu tượng được khai báo trong Window.Resources. Chúng hiển thị tốt ngay lần đầu tiên chúng cần xuất hiện (ví dụ: Menu được nhấp, biểu tượng MenuItem hoạt động), nhưng sau khi Menu khác (ví dụ: menu ngữ cảnh) được hiển thị, biểu tượng gốc biến mất và không trả về. Nó giống như yếu tố cuối cùng sử dụng biểu tượng lần đầu tiên được giữ nó.WPF: Biểu tượng biến mất

<Window.Resources> 
    <Image x:Key="Chart_16" 
      Source="pack://application:,,,/Resources/images/chart_16.png" /> 
    ... 
<Window.Resources> 

<MenuItem Header="Summary" 
      Command="loc:AppCommands.ShowSummary" 
      Icon="{StaticResource Chart_16}" /> 

Tôi đã thử lưu dưới dạng PNG 24 bit, PNG 24 bit xen kẽ và PNG 8 bit nhưng điều tương tự cũng xảy ra. Nó không chỉ là một, mỗi biểu tượng được sử dụng ở nhiều nơi hoạt động theo cách này.

Trả lời

9

Đó là vì tài nguyên của bạn là Image, là Control. Control s chỉ có thể có một phụ huynh để nó có hiệu quả được tái parented trong mỗi MenuItem khi đang bay.

lựa chọn của bạn là:

  1. Không sử dụng Image và thay vào đó sử dụng ImageSource hoặc thậm chí một string chứa URI của hình ảnh.
  2. Đặt tài nguyên thành không được chia sẻ với thuộc tính XAML x:Shared. Điều này sẽ tạo ra nhiều điều khiển Image nếu cần.
+0

Xin cảm ơn, thuộc tính x: Shared đã thực hiện thủ thuật. – Echilon