2011-11-22 32 views
5

Tôi có một ứng dụng đơn giản. Khi bạn nhấp vào một nút, biểu tượng tasbar sẽ thay đổi. Khi tôi chạy ứng dụng này từ studio trực quan, mọi thứ hoạt động tốt, nhưng khi tôi xuất bản ứng dụng WPF, biểu tượng thanh tác vụ không hoạt động (không có).Các biểu tượng không hoạt động sau khi xuất bản

Hành động xây dựng được đặt thành "tài nguyên/bản sao được nhúng luôn", tôi cũng đã thử nghiệm "Tài nguyên" nhưng không hoạt động.

var iconUri = new Uri("pack://application:,,,/images/internet_connection.ico", UriKind.RelativeOrAbsolute); 
     this.Icon = BitmapFrame.Create(iconUri); 

biểu tượng ở góc trên cùng bên trái của khung thay đổi, nhưng biểu tượng ở trên thanh tác vụ thì không.

Có ai giúp tôi không?

@Edit,

Tôi đã làm việc đó nhờ nhận xét của Pavel. Nhưng bây giờ một vấn đề vẫn là:

Khi tôi chạy nó trong visual studio, và tôi làm điều này:

var iconUri = UriHelper.GetUri(this.GetType(), "images/local_network.ico"); 
     this.Icon = BitmapFrame.Create(iconUri); 

Những thay đổi Icon. Nhưng với phiên bản đã xuất bản, nó không thay đổi.

@@ Edit,

Ok vì vậy đây là mã của tôi khi tôi nhấn một nút:

var iconUri = UriHelper.GetUri(this.GetType(), "images/internet_connection.ico"); 
     this.Icon = BitmapFrame.Create(iconUri); 
     mNotifyIcon = new NotifyIcon 
     { 
      BalloonTipText = "The app has been minimised. Click the tray icon to show.", 
      BalloonTipTitle = "The App", 
      Text = "The App", 
      Icon = BitmapFrame.Create(iconUri) 
     }; 

     BitmapImage image = new BitmapImage(); 
     image.BeginInit(); 
     image.UriSource = UriHelper.GetUri(this.GetType(), "images/internet_connection.png"); 
     image.EndInit(); 
     TaskbarItemInfo = new System.Windows.Shell.TaskbarItemInfo() { Overlay = image }; 

nó làm gì: Khi chạy từ VS: biểu tượng trong thanh tác vụ thay đổi, các lớp phủ hoạt động, biểu tượng ở góc trên cùng của ứng dụng thay đổi.

Sau khi xây dựng chạy exe: biểu tượng trên thanh tác vụ KHÔNG thay đổi, lớp phủ hoạt động, biểu tượng ở góc trên cùng của ứng dụng sẽ thay đổi.

Có ai có thể giải thích điều này không?

+0

tôi nhớ một vấn đề tương tự một lần, nhưng không thể nhớ các chi tiết. Đó là một cái gì đó để làm với các gói không được trong thư mục bin, hoặc không có tài nguyên trong một thư mục bin bên trong gói. Không có thời gian để tìm kiếm nó ngay bây giờ mặc dù, xin lỗi. – shawty

Trả lời

2

tôi nghĩ rằng dòng này làm việc cho bạn (bạn đã quên ...; thành phần/....):

var iconUri = new Uri("pack://application:,,,/YourProjectName;component/images/internet_connection.ico", UriKind.RelativeOrAbsolute); 

biểu tượng sử dụng

Build Action = Resource 
Copy to OutputDirectory = Do not copy 
+0

Điều này gây ra lỗi, ngay cả trong studio trực quan khi tôi chạy. Trước đây, nó hoạt động trong phòng thu trực quan. – Nealv

+0

Thông báo lỗi là gì? – punker76

+0

bằng cách chạy dòng này: iconUri = new Uri ("gói: // application: ,,,/SwitchLive; component/images/local_network.ico", UriKind.Relative); Tôi nhận được: 'Sự kêu gọi của các nhà xây dựng trên loại' SwitchLive.MainWindow 'phù hợp với các ràng buộc ràng buộc được chỉ định đã ném một ngoại lệ.' Dòng số '3' và vị trí dòng '9'. – Nealv

2

Cố gắng thiết lập xây dựng hành động trong 'Resource' và sử dụng một helper:

public static class UriHelper 
{ 
    /// <summary> 
    /// Gets absulute URI for provided relative path 
    /// </summary> 
    /// <param name="baseType">Base type for ussage as URI root</param> 
    /// <param name="relativePath">Relative path</param> 
    /// <returns>Absolute Uri</returns> 
    public static Uri GetUri(Type baseType, string relativePath) 
    { 
     Assembly oAssembly = Assembly.GetAssembly(baseType); 
     AssemblyName oName = oAssembly.GetName(); 
     return new Uri( 
       String.Format(
        "pack://application:,,,/{0};v{1};component/{2}", 
        oName.Name, 
        oName.Version.ToString(), 
        relativePath), 
       UriKind.Absolute); 
    } 
} 
+0

Biến cơ sở là gì? – Nealv

+0

@Nealv baseType là bất kỳ loại nào trong hội đồng mà tài nguyên được đính kèm. –

+0

Ok, công việc này cảm ơn tất cả các bạn, nhưng không có vấn đề gì khác. Bạn có thể kiểm tra chỉnh sửa trên câu hỏi của tôi khá vui lòng. – Nealv

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