2017-03-29 20 views
0

私は以下のデータベースを持っています:http://merc.tv/img/fig/Northwind_diagram.jpgと私はすべての従業員とその写真をリストボックスに表示したいと思います。これは私のWPFのコードであるデータベースからWPFで画像を表示

private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 
     var list = db.Employees; 
     list.Load(); 
     liemp.ItemsSource = list.Local.OrderBy(l => l.LastName); 
    } 

::私は私のコードを実行するたびに、私は、コードのこの部分でのSystem.InvalidOperationExceptionを受ける

<Window x:Class="NorthwindWPF.employeeList" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:NorthwindWPF" 
     mc:Ignorable="d" 
     Loaded="Window_Loaded" 
     Title="employeeList" Height="350" Width="300"> 
    <Grid> 
     <ListBox x:Name="liemp" 
      DisplayMemberPath="FirstName" 
      SelectedValuePath="EmployeeID"> 
      <Image Source="{Binding PhotoPath}" /> 
     </ListBox> 

    </Grid> 
</Window> 

そして、これは私のクラスのコードです:

namespace NorthwindWPF 
{ 
    /// <summary> 
    /// Interaction logic for employeeList.xaml 
    /// </summary> 
    public partial class employeeList : Window 
    { 

     NorthwindEntities db = new NorthwindEntities(); 

     public employeeList() 
     { 
      InitializeComponent(); 
     } 

     private void Window_Loaded(object sender, RoutedEventArgs e) 
     { 
      var list = db.Employees; 
      list.Load(); 
      liemp.ItemsSource = list.Local.OrderBy(l => l.LastName); 
     } 

    } 
} 

答えて

1

ListBoxに単一のImageアイテムを直接追加しました。その後のListBoxのItemsSourceが、その後InvalidOperationExceptionで失敗します設定

<ListBox ...> 
    <Image Source="{Binding PhotoPath}" /> <!-- here --> 
</ListBox> 

代わりに、リストボックスのDisplayMemberPathプロパティを設定するのは、このようなそのItemTemplate定義する必要があります。プログラムがフリーズするいくつかの理由について

<ListBox x:Name="liemp" SelectedValuePath="EmployeeID"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <Image Source="{Binding PhotoPath}"/> 
       <TextBlock Text="{Binding FirstName}"/> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 
+0

を、私は今、画像のパスを見て、私は彼らが無効であると思います。http:/は、 /accweb/emmployees/davolio.bmp – Michael

+0

'liemp'に対して' ObservableCollection'を 'DataSource'として使用しないのですか? – Everyone

+0

@Everyoneどのような理由で?明らかに、ItemsSourceプロパティは固定コレクションに一度設定されます。それ以外に、ここには「データソース」はありません。 – Clemens

関連する問題