2010-05-26 31 views
10

Tôi có một ứng dụng WPF mà tôi muốn sử dụng một số tài nguyên tĩnh. Tôi đã tạo một tệp Thư viện Tài nguyên XAML chứa tài nguyên. Tôi cũng đã thêm một chuỗi vào Tài nguyên của dự án thông qua bảng Properties.Làm cách nào để sử dụng tài nguyên toàn cầu trong WPF?

tôi cho rằng tôi chỉ có thể sử dụng các nguồn lực này với các biểu hiện ràng buộc:

{StaticResource ResourceName} 

Nhưng visual studio là nói cho tôi các nguồn lực không được tìm thấy. Tôi có phải bao gồm một số hình thức tham chiếu trong XAML của tôi không? Các ví dụ tôi đã thấy chỉ bao gồm các tài nguyên cục bộ như:

<Window.Resources>, <Page.Resources> etc 

Tôi không muốn đưa tài nguyên cục bộ bởi vì tôi muốn chúng có sẵn cho nhiều phần của ứng dụng.

Trả lời

9

Đặt chúng trong App.xaml :)

Trong mỗi ứng dụng WPF có một App.xaml (và tập tin mã tương ứng của nó, App.xaml.cs hoặc App.xaml.vb) hoạt động dưới dạng tệp chung cho tuyên bố rộng ứng dụng. Bạn có thể sử dụng tệp này để khai báo giao diện không đổi trong ứng dụng của bạn. Ví dụ: bạn có thể khai báo mặc định nền màu đỏ cho tất cả các nút trong ứng dụng .

http://www.microsoft.com/emea/msdn/thepanel/en/articles/introduction_wpf.aspx

+0

Trong dự án của tôi, tên này được đặt tên theo mặc định là Application.xaml. Đó là một câu trả lời hay nhưng tôi có thể không làm cho các phong cách trong ResourceLibrary của tôi có sẵn trên toàn cầu không? – Banford

+0

liên kết không hoạt động – tabby

2

Nhìn vào phần "tra cứu hành vi tài nguyên tĩnh" here. Mọi thứ trong từ điển tài nguyên của ứng dụng (ví dụ: Application.Resources) có sẵn trên toàn cầu. Bất cứ khi nào bạn tìm kiếm một tài nguyên với một khóa nhất định và khóa không được sử dụng ở bất kỳ đâu trong cấu trúc phân cấp của các từ điển tài nguyên cục bộ, từ khóa trong từ điển của ứng dụng sẽ được trả về.

Để điền từ điển tài nguyên của ứng dụng vào XAML, hãy tìm tệp XAML cho ứng dụng (thường là App.xaml) và thêm phần tử Application.Resources.

+0

Tôi có thể hiểu cách hoạt động tra cứu hoạt động theo cách của nó lên đến vùng Application.Resources này nhưng làm cách nào tôi sử dụng tài nguyên được đặt trên dự án. Ví dụ. Nhấp chuột phải vào tệp dự án, nhấp vào thuộc tính, chuyển đến tài nguyên. Tôi có nghĩa là các nguồn lực trong đó. Không được bao gồm trong Application.Resources của tôi và không phải là tập tin Xaml Resource Library của tôi. – Banford

+0

Vì vậy, tôi đã sử dụng .. Và điều đó đã được giải quyết một trong những vấn đề bằng cách cho phép tôi sử dụng Styles trong từ điển tài nguyên bên ngoài của mình. Vẫn đang vật lộn với nguồn tài nguyên dự án thực tế. – Banford

+0

Xin lỗi, tôi không nhận thấy rằng bạn đang cố gắng sử dụng tài nguyên dự án. Tài nguyên dự án và từ điển tài nguyên thực sự là hai điều khác nhau. Nếu bạn có (ví dụ) một hình ảnh là tài nguyên dự án, bạn có thể đưa nó vào từ điển tài nguyên thông qua ''. Nhưng không phải mọi lớp WPF đều có thuộc tính 'Source' có thể tải nó từ các tài nguyên của dự án. –

0

Chỉ cần thêm 2 xu vào đây.

Tôi cũng muốn sử dụng tài nguyên toàn cầu, nhưng tôi sử dụng một lớp Ứng dụng tùy chỉnh, vì vậy tôi không thể đặt nó trong App.xaml.

Tôi tạo ra một Resources.xaml ở vị trí gốc của tôi, và sau đó đã làm điều này:

Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("/MyWpfClient;component/Resources.xaml", UriKind.Relative) }); 

Nhưng được cảnh báo, các Resource.xaml PHẢI có hành động xây dựng để 'Trang'. Khi nó không nó không thể tìm thấy một số loại tôi sử dụng như là chuyển đổi.

2

Bạn có thể tạo một cuốn từ điển các nguồn lực toàn cầu và bao gồm đường đi của nó trong App.xaml

<Application.Resources> 
     <ResourceDictionary> 
      <ResourceDictionary.MergedDictionaries> 
       <ResourceDictionary Source="/YourProject;Component/YourXamlFile.xaml"/> 
      </ResourceDictionary.MergedDictionaries> 
     </ResourceDictionary> 
    </Application.Resources> 

Bây giờ tất cả nguồn lực của bạn trong YourXamlFile.xaml sẽ được hiển thị trên toàn cầu trong dự án của bạn.

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