2013-07-10 35 views
0

我有一個ListBox,應該顯示與每個項目的圖片。我編寫代碼,當我運行它時,圖片無法顯示,但只顯示文本。我的代碼中有什麼錯誤?我確保圖像文件路徑是正確的。c#爲什麼ListBoxItem不能顯示每張圖片(左側)?

我想顯示每個項目的文字(右側)和圖標(左側)。

WPF:

<ListBox Name="ListTest" DisplayMemberPath="Name" HorizontalAlignment="Left" Height="358" Margin="603,38,0,0" VerticalAlignment="Top" Width="361"> 
</ListBox> 

C#

public partial class UserControl2 : UserControl 
{ 
    public UserControl2() 
    { 
     InitializeComponent(); 
     this.LoadLogos(); 
    } 

    private void LoadLogos() 
    { 
     this.ListTest.Items.Add(new CompanyDataContext("Adobe", "Adobe is a designing tool.", "/Company Logos/testDinner.jpg")); 
     this.ListTest.Items.Add(new CompanyDataContext("Facebook", "FedEx is a social networking website.", "/Company Logos/facebook.jpg")); 
     this.ListTest.Items.Add(new CompanyDataContext("FedEx", "FedEx is a courier company.", "/Company Logos/fedex.jpg")); 

    } 

    private class CompanyDataContext 
    { 
     public CompanyDataContext(string name, string about, string image) 
     { 
      this.Name = name; 
      this.About = about; 
      this.Image = image; 
     } 

     public string Name { get; private set; } 
     public string About { get; private set; } 
     public string Image { get; private set; } 
    } 
} 

回答

1

您需要CompanyDataContext一個DataTemplate,因爲它不從Visual繼承,WPF不知道如何因此使其它調用ToString方法上這個。

這可以用aDataTemplate進行處理爲ListBox

未經測試的模板:

<ListBox.ItemTemplate> 
            <DataTemplate> 
                <Border x:Name="bord" CornerRadius="5" Margin="2" BorderBrush="LightGray" BorderThickness="3" Background="DarkGray"> 
                    <StackPanel Margin="5"> 
                        <TextBlock x:Name="txt" Text="{Binding Name}" FontWeight="Bold"/> 
                        <Image Source="{Binding Image}" Height="100"/> 
                    </StackPanel> 
                </Border> 

            </DataTemplate> 
</ListBox.ItemTemplate> 

編輯錯字

+0

我覺得Dockpanels會在這種情況下最好的。 – Master117

+1

而你並不是指ControlTemplate,你的意思是DataTemplate ...至少我希望如此:) – dowhilefor

+0

Dockpanels在這裏不是必需的,上面的項目模板應該可以做到。 @dowhilefor感謝提示。 – Samuel

相關問題