2011-08-09 156 views
0

我嘗試添加縮略圖列表視圖,但問題是,沒有得到displayed.here是代碼添加到縮略圖列表視圖

System.Windows.Forms.OpenFileDialog open = new System.Windows.Forms.OpenFileDialog(); 
open.Filter = "Images (*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|" + "All files (*.*)|*.*"; 
open.Title = "Add Slide Show Image"; 
open.ShowDialog(); 

BitmapImage logo = new BitmapImage(); 
logo.BeginInit(); 
logo.CacheOption = BitmapCacheOption.OnLoad; 
logo.CreateOptions = BitmapCreateOptions.IgnoreImageCache; 
logo.UriSource = new Uri(open.FileName); 
logo.EndInit(); 


image.Add(logo); 

listView1.ItemsSource = image; 

listView1.Items.Refresh(); 

<ListView.ItemTemplate> 
    <HierarchicalDataTemplate> 
     <Border Padding="5,2,0,2"> 
      <StackPanel Width="289" Orientation="Horizontal" > 
       <Border CornerRadius="6" BorderThickness="4" Margin="0,0,4,0" Height="80" Width="80" Background="{x:Null}"> 
        <Image Stretch="Fill" Source="{Binding image}" /> 
        <Border.BorderBrush> 
         <LinearGradientBrush EndPoint="0.9,1" StartPoint="0.5,0"> 
          <GradientStop Color="#FF00C4FF" Offset="1" /> 
          <GradientStop Color="#FF093D5C" Offset="0.089" /> 
         </LinearGradientBrush> 
        </Border.BorderBrush> 
       </Border> 
       <Border CornerRadius="6" BorderThickness="4" Margin="-85,0,4,0" Height="80" Width="80"> 
        <Border.Background> 
         <LinearGradientBrush EndPoint="0.9,1.2" StartPoint="0.1,0"> 
          <GradientStop Color="#4EFFFFFF" Offset="0" /> 
          <GradientStop Color="#49FFFFFF" Offset="0.163" /> 
          <GradientStop Color="Transparent" Offset="0.472" /> 
          <GradientStop Color="#3DFFFFFF" Offset="0.457" /> 
         </LinearGradientBrush> 
        </Border.Background> 
       </Border> 
       <CheckBox Content="{Binding Name}" IsChecked="{Binding IsChecked}" VerticalAlignment="Center" /> 
      </StackPanel> 
     </Border> 
    </HierarchicalDataTemplate> 
</ListView.ItemTemplate> 

A screenshot

+1

看看輸出窗口綁定錯誤 –

+0

葉,我看到的錯誤是說,在object.It發現圖像屬性諾特意味着我給它的項目來源沒有圖像property.so我能做些什麼來顯示BitmapImage列表 –

+0

請參閱下面的答案 –

回答

1

創建一個類

class MyImages 
    { 
     public BitmapImage image {get;set;} 
     public String Name {get;set;} 
     public bool IsChecked {get;set;} 
    } 

現在創建一個List<MyImages> myImages = new List<MyImages>();

BitmapImage logo = new BitmapImage(); 
logo.BeginInit(); 
logo.CacheOption = BitmapCacheOption.OnLoad; 
logo.CreateOptions = BitmapCreateOptions.IgnoreImageCache; 
logo.UriSource = new Uri(open.FileName); 
logo.EndInit(); 

myImages.Add(new MyImage(){image = logo, Name = "SomeName", IsChecked = true }); 

listView1.ItemsSource = myImages; 
listView1.Items.Refresh(); 
1

如果image(在您的代碼中)是一個集合,您創建了一個BitmapImage對象的集合。您的模板綁定到image,NameIsChecked屬性,它們都不屬於BitmapImage類的屬性。

可能想在您的視圖模型類(有NameIsChecked特性之一)的Image屬性,設置每個這些對象的Image,然後在模板的Source屬性綁定到Image屬性在你的對象。