2010-05-10 2 views
4

그래서 ListView 항목 내에서 목록에 바인딩하려고하는데 올바른 바인딩을 얻을 수없는 것 같습니다. 어떤 사람이 수정 된 바인딩으로 나를 도울 수 있다면 그것은 좋을 것입니다! 당신은 알려 주시기 바랍니다 더 이상 소스 코드가 필요한 경우WPF - 목록보기 항목 내의 목록에 바인딩

//class that xaml is initially bound to 
public partial class UploadMngPanel : Grid 
{ 
    .... 
    //initial list to bind to 
    public ObservableCollection<FinishedAnimeCollection> UploadedAnime 
    { 
     get { return uploadedAnime; } 
    } 
} 

public class FinishedAnimeCollection 
{ 
    ... 
    //second list to bind to 
    private ObservableCollection<AnimeEpisodeItem> _episodes = new ObservableCollection<AnimeEpisodeItem>(); 

    public ObservableCollection<AnimeEpisodeItem> Episodes 
    { 
     get { return _episodes; } 
    } 
} 

public class AnimeEpisodeItem 
{ 
    public String Title { get; set; } 

    public DateTime TimeAdded { get; set; } 
} 

내가 해결하기 위해 노력 오전 XAML은

<!-- First list binding here (this works)--> 
<ListView Name="finishedView" ItemsSource="{Binding UploadedAnime}"> 
<ListView.Resources> 
    <ResourceDictionary> 
    <ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="AnimeExpander.xaml"/> 
    </ResourceDictionary.MergedDictionaries> 

    <DataTemplate x:Key="AnimeRow"> 
    <DockPanel> 
    <!-- <Image Height="75" Width="Auto" Source="{Binding Image}" DockPanel.Dock="Left" VerticalAlignment="Top"/> --> 
    <Expander Template="{StaticResource AnimeExpanderControlTemplate}" Header="{Binding AnimeTitle}"> 
     <Expander.ContentTemplate> 
     <DataTemplate> 
     <Border BorderBrush="Black" BorderThickness="1,1,1,1"> 
     <!--Second list binding here (this doesn't work)--> 
     <ListView ItemsSource="{Binding Path=Episodes}"> 
      <ListViewItem> 
      <DockPanel> 
      <TextBlock Text="{Binding Title}" DockPanel.Dock="Left" /> 
      <!--<TextBlock Text="{Binding TimeAdded}" DockPanel.Dock="Right" />--> 
      </DockPanel> 
      </ListViewItem>    
     </ListView> 
     </Border> 
     </DataTemplate> 
     </Expander.ContentTemplate> 
    </Expander> 
    </DockPanel>  
    </DataTemplate>   
    </ResourceDictionary>  
</ListView.Resources> 

<ListView.View> 
    <GridView> 
    <GridViewColumn Width="700" Header="Anime" CellTemplate="{StaticResource AnimeRow}"/>  
    </GridView> 
</ListView.View> 

</ListView> 

이하 : 여기

는 아마 필요합니다 소스입니다. 고마워!

+0

게시 프로세스에서 코드 게시가 파괴되었습니다 ... 미리보기에서 어떻게 보이는지 묻지 마십시오. XAML 재 게시를 시도하겠습니다. – Josh

답변

1

좋아, 그래서 주위에 좀 더 바보짓을 한 후 나는 마침내 그것을 어떻게하는지 알았다. 분명히 :

<ListView ItemsSource="{Binding Path=Episodes}"> 
     <ListViewItem> 
      <DockPanel> 
      <TextBlock Text="{Binding Title}" DockPanel.Dock="Left" /> 
      <!--<TextBlock Text="{Binding TimeAdded}" DockPanel.Dock="Right" />--> 
      </DockPanel> 
     </ListViewItem>              
    </ListView> 

오류가 발생하지 않았지만 오류가 발생하지 않습니다. 목록 뷰에 대해 ItemSource를 지정하면 ListView 내에서 ListViewItem 태그를 사용할 수 없습니다. 그래서 내 코드를 다음과 같이 수정했습니다.

<TabItem Header="Finished"> 
      <TabItem.Resources> 
       <ResourceDictionary> 
         <ResourceDictionary.MergedDictionaries> 
          <ResourceDictionary Source="AnimeExpander.xaml"/> 
         </ResourceDictionary.MergedDictionaries> 

         <DataTemplate x:Key="EpisodeItem"> 
          <DockPanel Margin="30,3"> 
           <TextBlock Text="{Binding Title}" DockPanel.Dock="Left" /> 
           <WrapPanel Margin="10,0" DockPanel.Dock="Right"> 
            <TextBlock Text="Finished at: " /> 
            <TextBlock Text="{Binding TimeAdded}" /> 
           </WrapPanel> 
          </DockPanel> 
         </DataTemplate> 

         <DataTemplate x:Key="AnimeItem"> 
          <DockPanel Margin="5,10"> 
           <Image Height="75" Width="Auto" Source="{Binding ImagePath}" DockPanel.Dock="Left" VerticalAlignment="Top"/> 
           <Expander Template="{StaticResource AnimeExpanderControlTemplate}" > 
            <Expander.Header> 
             <TextBlock FontWeight="Bold" Text="{Binding AnimeTitle}" /> 
            </Expander.Header> 

             <ListView ItemsSource="{Binding Episodes}" ItemTemplate="{StaticResource EpisodeItem}" BorderThickness="0,0,0,0" /> 

           </Expander> 
          </DockPanel>        
         </DataTemplate>       
        </ResourceDictionary>   
      </TabItem.Resources> 

      <ListView Name="finishedView" ItemsSource="{Binding UploadedAnime, diagnostics:PresentationTraceSources.TraceLevel=High}" ItemTemplate="{StaticResource AnimeItem}" />     
</TabItem>