2009-10-12 18 views
9

Tôi có một điều khiển Hình ảnh có chứa đường dẫn đến hình ảnh được nhúng (xây dựng hành động 'tài nguyên').Hình ảnh nhúng không hiển thị khi đang ở trong UserControl

<Image Source="Assets/images/image.png" Stretch="None" /> 

Nếu tôi thêm nó vào vùng chứa trong MainPage.xaml, hình ảnh sẽ xuất hiện tốt. Khi có cùng một hình ảnh trong một UserControl như hình dưới đây, và sau đó thêm một thể hiện của UserControl đó trên MainPage.xaml hình ảnh không xuất hiện.

<UserControl x:Class="HomePage.Views.SimpleUserContol" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" > 
    <Grid x:Name="LayoutRoot" > 
     <Image Source="Assets/images/image.png" Stretch="None" /> 
    </Grid> 
</UserControl> 

Bất kỳ ai cũng có thể giải thích tại sao điều này xảy ra và có thể chỉ cho tôi theo hướng giải pháp.

Chúc mừng, J

(Tôi đang làm việc trong Silverlight nhưng sẽ nghĩ điều tương tự có thể xảy ra trong WPF)

EDIT:

Thiết

<Image Source="/Assets/images/image.png" Stretch="None" /> 

hoạt động tốt khi thiết lập tác vụ xây dựng 'Nội dung' tuy nhiên nó không hoạt động khi sử dụng 'tài nguyên'. Vấn đề là chắc chắn đó là vị trí tương đối trong cấu trúc tập tin như thêm ../ hoạt động tốt. Tôi vẫn muốn một giải pháp để lấy hình ảnh từ hội đồng nếu có thể

Trả lời

16

Bạn phải tham chiếu nó làm tài nguyên chứ không chỉ đường dẫn. Đây là cách nó được thực hiện trong một ứng dụng WPF:

<Image Source="/MyAppName;component/images/image.png" Stretch="None" /> 

Những hình ảnh ban đầu nằm trong images/image.png

Lưu ý:
Tôi không có kinh nghiệm trong Silverlight, nhưng bạn nói nó có lẽ là tương tự trong WPF, vì vậy tôi đề nghị này ...

0

Tôi nghĩ rằng vấn đề có liên quan đến không gian tên "ảo" mà hình ảnh của bạn nhận được khi nó được nhúng trong tài nguyên (từ đường dẫn logic đến nó) và sự khác biệt với không gian tên usercontrol của bạn.

8

Bạn đang sử dụng đường dẫn tương đối cho hình ảnh. Nếu UserControl của bạn nằm trong một thư mục con, đường dẫn tương đối không hợp lệ nữa. Bạn nên sử dụng đường dẫn tuyệt đối như "/Assets/images/image.png" hoặc "pack://application:,,,/Assets/images/image.png" (sử dụng phiên bản cuối cùng này nếu UserControl của bạn sắp được sử dụng bởi một assembly khác)

0

bằng cách sử dụng dấu '/' để đến gốc của trang web chỉ hoạt động nếu gốc của trang không nằm trong thư mục phụ. ví dụ: trang quản trị dưới dạng thư mục con cho trang web chính (http://www.somesite.com/admin). Trong trường hợp này, sử dụng '/assets/images/image.png' sau đó sẽ đi đến trang mẹ trước tiên. Bạn có thể tham khảo hình ảnh như sau: '~/assets/images/image.png'

3

Nếu bạn cần thay đổi loại xây dựng từ Nội dung thành Tài nguyên, hãy thử tạo tòa nhà sạch sẽ. Tôi đã có mọi thứ chính xác (đường dẫn đến tài nguyên của dự án khác, xây dựng kiểu, et al.) Nhưng nó đã không hoạt động cho đến khi tôi thêm một hình ảnh mới vào thư mục hình ảnh, mà có lẽ xóa các trạng thái cũ.

Thực tế, xóa thủ công thư mục bin và obj trong dự án có hình ảnh.

0

Tôi cũng tìm thấy khi một hình ảnh có các ký tự đặc biệt yêu cầu mã hóa trong tên tệp, như "+", được mã hóa %2b cũng có thể gây ra sự cố.

Tôi đề xuất đổi tên bất kỳ hình ảnh nào có thể chứa ký tự thoát.

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