2010-01-16 3 views
0

properties => SchoolclassName and LessonName에 대한 바인딩을 TextBlock에서 모두 사용하려면 xaml/코드에서 무엇을 변경해야합니까? 바인딩 오류가 표시되지 않지만 표시되는 내용이 표시되지 않습니다.바인딩 오류가 없지만 여전히 바인딩에 아무것도 표시되지 않습니까?

<Grid Margin="20" Height="300" Background="AliceBlue"> 
    <ListView ItemsSource="{Binding Timetable}"> 
     <ListView.View> 
      <GridView>      
       <GridView.Columns>        
        <GridViewColumn Header="Period" 
            DisplayMemberBinding="{Binding LessonPeriod}"/> 
        <GridViewColumn Header="Monday"> 
         <GridViewColumn.CellTemplate> 
          <DataTemplate> 
           <ListView ItemsSource="{Binding Monday}"> 
            <ListView.ItemTemplate> 
             <DataTemplate> 
              <StackPanel Width="150" Orientation="Horizontal"> 
               <TextBlock Text="{Binding LessonName}"/> 
               <TextBlock Text=" "/> 
               <TextBlock Text="{Binding SchoolclassName}"/> 
              </StackPanel> 
             </DataTemplate> 
            </ListView.ItemTemplate> 
           </ListView> 
          </DataTemplate> 
         </GridViewColumn.CellTemplate> 
        </GridViewColumn> 
       </GridView.Columns> 
      </GridView> 
     </ListView.View> 
    </ListView> 
</Grid> 


public partial class Window1 : Window 
{ 
    List<TimetableEntry> _timetable = new List<TimetableEntry>(); 

    public List<TimetableEntry> Timetable 
    { 
     get { return _timetable; } 
     set { _timetable = value; } 


    public Window1() 
    { 
     InitializeComponent(); 

     _timetable.Add(new TimetableEntry() 

          { 
           LessonPeriod = "Period 1", 
           Monday = new TimetableDay() 
           { 
            LessonName = "Maths" , 
            SchoolclassName = "1c",           
           }, 

          } 
         ); 

     this.DataContext = this; 
    } 


    public class TimetableEntry 
    { 
     public string LessonPeriod { get; set; } 
     public TimetableDay Monday { get; set; } 
     public TimetableDay Tuesday { get; set; } 
     public TimetableDay Wednesday { get; set; } 
     public TimetableDay Thursday { get; set; } 
     public TimetableDay Friday { get; set; } 
     public TimetableDay Saturday { get; set; } 
     public TimetableDay Sunday { get; set; } 
    } 

    public class TimetableDay 
    { 
     public string LessonName { get; set; } 
     public string SchoolclassName { get; set; } 
    } 

    public class TimetableLesson 
    { 
     public string LessonName { get; set; } 
     public string SchoolclassName { get; set; } 
     public DateTime LessonTime { get; set; } 
    } 
} 

답변

1

내부 ListView의 ItemsSource를 Monday 속성으로 설정합니다. 그러나 월요일은 컬렉션이 아닌 TimetableDay이므로 열거 할 내부 목록보기에 대한 "목록"이 없습니다.

당신은 아마 내부 ListView를 제거 할, 그리고 월요일 속성의 하위 속성을 사용하여 TimetableEntry에서 직접 DataTemplate을 바인딩이

:

<GridViewColumn.CellTemplate> 
    <DataTemplate> 
    <StackPanel Width="150" Orientation="Horizontal"> 
     <TextBlock Text="{Binding Monday.LessonName}" /> <!-- note multipart path --> 
     <TextBlock Text=" " /> 
     <TextBlock Text="{Binding Monday.SchoolclassName}" /> 
    </StackPanel> 
    </DataTemplate> 
</GridViewColumn.CellTemplate> 
+0

예 당신입니다 좋아,이 제거 될 때 내부 ListView가 작동합니다! 하지만 ListView가 필요합니다. ListView.ItemTemplates를 추가하여 매주 6 열을 추가하려고합니다. 월요일, 화요일, 수요일 ... List <>를 다시 도입하지 않으면 어떻게 처리 할 수 ​​있습니까? – msfanboy

+0

ups 미안하지만 내 실패 화요일에 GridViewColumn을 추가하는 것을 잊어 버렸습니다. 지금 작동합니다! – msfanboy

+0

아 체크 및 테스트가 너무 빠름 P ListView 대신 지금 DataGrid에서 사용하는 수업은 월요일에 중지 한 화요일에 시작합니다 ... 이미지를 명확하게하려면 : [URL = http : //img64.imageshack.us/i/classn.png/] [IMG] http://img64.imageshack.us/img64/9691/classn.png [/ IMG ] [/ URL] 월요일 화요일에 수업이 시작되면 화요일 수업이 시작됩니다. 1,2,3 시간에 화요일에 수업을 시작할 수 있습니까? – msfanboy

관련 문제