Нет ошибки привязки, но все равно привязка ничего не показывает - PullRequest
0 голосов
/ 16 января 2010

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

<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 Ответ

1 голос
/ 16 января 2010

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

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

<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>
...