2014-04-08 4 views
5

현재 이미지를 추가하려고하는 C# WPF 응용 프로그램과 각 목록 항목의 일부 텍스트가있는 작업을하고 있습니다.ListBox 항목에 이미지 추가

텍스트에 대한 바인딩이 작동하지만 이미지가 표시되지 않습니다. 다음은

class DirectoryListing 
    { 
     public string path {get; set;} 
     public Image image{get; set;} 
     public DirectoryListing(Image imgage, String path) 
     { 
      this.image = image; 
      this.path = path; 
     } 
    } 

내가 텍스트가 추가지고

Image image = new Image(); 
      BitmapImage bi = new BitmapImage(new Uri(@"C:\Users\Chris\Documents\Visual Studio 2010\Projects\ServerAdministrator\ServerAdministrator\bin\Debug\images\directory.png")); 
      image.Source = bi; 
      lstDirecotryListing.Items.Add(new DirectoryListing(image, "hello")); 

목록 상자에 항목을 추가하고 어떻게 다음

<Window x:Class="ServerAdministrator.FtpDirectoryListing" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:local="clr-namespace:ServerAdministrator" 
     Title="FTP Directory Listing" Height="391" Width="599"> 
    <Grid> 
     <StatusBar Height="30" Margin="0,322,0,0" Name="statusBar1" VerticalAlignment="Top" /> 
     <ToolBar Height="26" Name="toolBar1" VerticalAlignment="Top" /> 
     <TextBox Height="23" HorizontalAlignment="Left" Margin="12,32,0,0" Name="textBox1" VerticalAlignment="Top" Width="517" /> 
     <ListBox x:Name="lstDirecotryListing" Height="233" HorizontalAlignment="Left" Margin="12,61,0,0" VerticalAlignment="Top" Width="553"> 
      <ListBox.ItemTemplate> 
       <DataTemplate DataType="{x:Type local:DirectoryListing}"> 
        <StackPanel> 
         <TextBlock Margin="3" Text="{Binding path}" /> 
         <ContentControl Margin="3" Content="{Binding image}" /> 
        </StackPanel> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
    </Grid> 
</Window> 

가 내 디렉토리 일 클래스 : 아래

내 XAML입니다 좋지만 이미지가 아닙니다. 어떤 도움

System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.ItemsControl', AncestorLevel='1''. BindingExpression:Path=HorizontalContentAlignment; DataItem=null; target element is 'ComboBoxItem' (Name=''); target property is 'HorizontalContentAlignment' (type 'HorizontalAlignment') System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.ItemsControl', AncestorLevel='1''. BindingExpression:Path=VerticalContentAlignment; DataItem=null; target element is 'ComboBoxItem' (Name=''); target property is 'VerticalContentAlignment' (type 'VerticalAlignment')

감사합니다 당신이

UPDATE

I를 제공 할 수가 관련이 있는지

는 잘 모르겠어요하지만 난 VS2010에서 콘솔 출력에 다음과 취득 클레멘스 (Clemens)의 대답 덕분에 그 경로가 이미지의 경로가 아니라 어쨌든 이미지와 텍스트를 표시하는 것과 동일한 두 변수를 사용하고 있습니다.

문제는 텍스트가 표시되고 그림이 아래에 있으며, 그림과 텍스트를 나란히 표시해야하는 이유는 무엇입니까?

public class DirectoryListing 
{ 
    public string Name { get; set; } 
    public string Path { get; set; } 
} 

을이에 DataTemplate을 변경 :

+0

예외는이 문제와 관련이없는 콤보 상자 항목의 HorizontalContentAlignment입니다. 코드가 멋지게 보이므로 좀 더 살펴보고 대답을 얻으시기 바랍니다. – BradleyDotNET

+0

'ComboBoxItem'이 정의 된 곳에'XAML '을 게시 할 수 있습니까? –

+0

다시 보았습니다. 콤보 상자에 대한 메시지는 문제가있는 이전 대화가 아닌 이전 대화 용입니다. – Boardy

답변

7

이에보기 모델을 감소

<ListBox.ItemTemplate> 
    <DataTemplate> 
     <StackPanel Orientation="Horizontal"> 
      <TextBlock Margin="3" Text="{Binding Name}"/> 
      <Image Margin="3" Source="{Binding Path}"/> 
     </StackPanel> 
    </DataTemplate> 
</ListBox.ItemTemplate> 

내장 타입 변환을 자동으로 파일 경로 문자열에서 ImageSource를 작성합니다.

+0

고마워. 두 번째 문제가있다. 내 질문을 업데이트했다. – Boardy

+0

'Orientation = "Horizontal"을 StackPanel. – Clemens

+0

감사합니다. 많은 도움을 주셔서 감사합니다 – Boardy

관련 문제