2016-04-18 29 views
0

我正在做一個UWP應用程序,而且我很難用UWP應用程序加載和綁定圖像,應該怎麼做?如何在UWP應用程序中加載和綁定可移植庫中包含的圖像?

我現在的結構:

MyApp.Model: 
| 
|-Models 
    |-MyModel.cs 
    |-MyModelContainer.cs 
|-Resources 
    |-image1.png 
    |-image2.png 
    |-image3.png 

我的XAML是在另一個項目(10勝通用的應用程序,並參考該便攜式類庫。)

MyModelContainer僅僅是實例化一個IEnumerable<MyModel>一個單獨容器。這裏是他們的內容:

public class MyModel{ 
    public String Name{get;set;} 
    public ??????? Icon {get;set;} 
} 

public static class MyModelContainer{ 
    private static IEnumerable<MyModel> _myModelList; 

    public static IEnumerable<MyModel> MyModelList{get{ 
     if(_myModelList==null){ 
      Initialize(); 
     } 
     return _myModelList; 
    }} 

    private static Initialize(){ 
     _myModelList = new List<MyModel>() { 
      new MyModel(){ 
       Name = "Model one" 
       Icon = ??????? 
      } 
     }; 
    } 
} 

在我的XAML一些地方我收到的MyModel列表,在ItemsControl

<ItemsControl ItemsSource="{Binding MyModelListProperty}" > 
    <ItemsControl.ItemsPanel > 
     <ItemsPanelTemplate> 
      <StackPanel/> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate > 
      <Button Margin="10" MinHeight="50" MinWidth="40" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" > 
       <Grid> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="*"></RowDefinition> 
         <RowDefinition Height="Auto"></RowDefinition> 
        </Grid.RowDefinitions> 
        <Image Source="{Binding Icon}" ></Image> 
        <TextBlock Grid.Row="1" Text="{Binding Name}" ></TextBlock> 
       </Grid> 
      </Button> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl>^ 

我的問題:

  1. 是什麼類型屬性,我應該用來綁定圖像(我想它是BitmapImage
  2. 我應該如何創建此屬性?我trie d Icon = new BitmapImage(new Uri("ms-appx://MyApp.Model/Resources/image1.png"))沒有任何運氣,我沒有加載圖像(並且ImageFailed事件被觸發)。
  3. 我該如何將此屬性綁定到<Image/>

這是一個UWP(Windows 10)應用程序,而不是WPF,不是win8。

非常感謝。

編輯

這裏是文件夾結構

MyApp == AstroApp 
MyApp.Model == AstroApp.Model 
MyModel = AstroSign 
MyModelContainer = AstroManager 

enter image description here

+0

嘗試此 Archana

+0

@LovetoCode以及如何創建ImageUrl?它是一個字符串或一個URI,它是什麼格式? – J4N

+0

它在字符串中。或者只是給URL來源屬性。 BitmapImage將自動創建。 。讓圖標爲「ms-appx:///MyApp.Model/Resources/image1.png」 – Archana

回答

1

如果你的圖片是在同一個項目作爲您MyModelContainer,這應該工作:

public class MyModel{ 
    public String Name{get;set;} 
    public ImageSource Icon {get;set;} 
} 

public static class MyModelContainer{ 
    private static IEnumerable<MyModel> _myModelList; 

    public static IEnumerable<MyModel> MyModelList{get{ 
     if(_myModelList==null){ 
      Initialize(); 
     } 
     return _myModelList; 
    }} 

    private static Initialize(){ 
     _myModelList = new List<MyModel>() { 
      new MyModel(){ 
       Name = "Model one" 
       Icon = new BitmapImage(new Uri("ms-appx:///Resources/image1.png")); 
      } 
     }; 
    } 
} 

如果你R圖像是在另一組件中,使用此URL:

Icon = new BitmapImage(new Uri("ms-appx:///NameOfProjectWithImage/Resources/image1.png")); 
+0

它與XAML在同一個項目中,但與項目不同。我試過你的例子,但我仍然沒有圖像綁定和事件「Image.ImageFailed」被觸發:( – J4N

+0

如果你嘗試ms-appx:///NameOfProjectWithImage/Resources/image1.png? – Evk

+0

同樣的事情(這是什麼我說我試過了)圖像的預期構建動作是什麼 – J4N

相關問題