2010-01-16 2 views
0

Что мне нужно изменить в моем xaml/code, чтобы сделать привязку к properties => SchoolclassName and LessonName работать как на TextBlock? Я не получаю Binding ошибки, но я не вижу ничего отображается:Ошибка привязки, но все еще привязка ничего не показывает?

<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

Вы настраиваете ItemsSource внутренней ListView, чтобы быть собственностью понедельник. Но понедельник - это TimetableDay, а не коллекция, поэтому нет списка для просмотра внутреннего списка.

Вы, вероятно, просто хочу, чтобы избавиться от внутреннего ListView, и имеют привязку DataTemplate непосредственно от TimetableEntry, используя подсвойства собственности Понедельник:

<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, потому что я хочу добавить еще 6 экземпляров ListView.ItemTemplates, чтобы добавить по шесть столбцов по одному для каждого дня недели: Понедельник, вторник, среда ... Как я мог бы справиться с этим, не представив List <> снова? – msfanboy

+0

ups извините, моя неудача, я забыл добавить вторник и т. Д. GridViewColumn, теперь работает! – msfanboy

+0

ah Я действительно слишком быстро с моими проверками и испытаниями, P проблема в том, что в моем DataGrid, который я использую сейчас вместо ListView, уроки начинаются во вторник, где они останавливаются в понедельник ... см. image, чтобы сделать это ясно: [URL = http: //img64.imageshack.us/i/classn.png/] [IMG] http://img64.imageshack.us/img64/9691/classn.png [/ IMG ] [/ URL] Уроки во вторник начинаются непосредственно после уроков в понедельник. Как я могу начать занятия во вторник в 1,2,3 часа? – msfanboy

Смежные вопросы