2013-09-04 63 views
8

Tôi có điều này ResourceDictionary trong Main.xaml:Cách đặt Nguồn hình ảnh trong C# thành XAML Tài nguyên tĩnh theo lập trình?

<Window.Resources> 
    <ResourceDictionary> 
     <BitmapImage x:Key="Customer" UriSource="Icons/customer.png"/> 
     <BitmapImage x:Key="Project" UriSource="Icons/project.png"/> 
     <BitmapImage x:Key="Task" UriSource="Icons/task.png"/> 
    </ResourceDictionary> 
</Window.Resources> 

tôi bước đầu thiết lập hình ảnh sử dụng:

<Image Name="TypeIcon" HorizontalAlignment="Left" VerticalAlignment="Center" 
    Source="{StaticResource Customer}" Height="16" Width="16"/> 

Tôi đang cố gắng để thay đổi TypeIcon 's Source từ khách hàng-Dự án trong một Phương thức C#.

Tôi đã cố gắng sử dụng:

TypeIcon.Source = "{StaticResource Project}"; 

Nhưng tôi nhận được lỗi này:

Cannot implicitly convert type string to System.Windows.Media.ImageSource

tôi đã cố gắng định hình ảnh sử dụng new ImageSource(), nhưng điều này không làm việc, hoặc.

Làm cách nào để thay đổi hình ảnh Source của chương trình bằng C#?

Trả lời

14

Sau nhiều Googling, trong khi viết câu hỏi này, tôi đã tìm ra cách để làm điều đó:

TypeIcon.Source = (ImageSource) Resources["Project"]; 
2

Bạn có thể sử dụng lớp ImageSourceConverter để có được những gì bạn muốn, ví dụ:

img1.Source = (ImageSource)new ImageSourceConverter().ConvertFromString("/Assets/check.png"); 
+1

Lệnh 'Media' namespace không có sẵn cho các ứng dụng phổ quát 'System.Windows.Media.ImageSourceConverter' –

9

Nó không dành cho tài nguyên tĩnh nhưng có lẽ sẽ hữu ích ... :)

tức là cách đặt nền cho lưới động

var myBrush = new ImageBrush(); 
      var image = new Image 
          { 
           Source = new BitmapImage(
            new Uri(
             "pack://application:,,,/YourAppName;component/Images/Boo.png")) 
          }; 
myBrush.ImageSource = image.Source; 
MainGrid.Background = myBrush; 

ví dụ: làm thế nào để thiết lập biểu tượng của ứng dụng tự động

var idleIco = new Image 
      { 
       Source = new BitmapImage(
        new Uri(
         "pack://application:,,,/YourAppName;component/Images/idle.ico")) 
      }; 
SomeObjectYouAreUsingToSet.IconSource =idleIco.Source;