【问题标题】:Nested binding with templates带有模板的嵌套绑定
【发布时间】:2016-06-10 19:01:31
【问题描述】:


我正在我的应用程序中创建“课程”选项卡。问题在于显示数据。

Timetable(List<DayInfo>) 绑定到 ItemsControl。每个DayInfo 都是此ItemsControl 中的一个项目。我尝试将Exams 集合绑定到放置在 ItemTemplate 中的嵌套 ItemsControl,但它不起作用。

我想知道我做错了什么。我猜我的Exams 绑定是问题所在。

时间表:

private List<DayInfo> timetable;
public List<DayInfo> Timetable
{
    get { return timetable; }
    set
    {
        timetable = value;
        NotifyOfPropertyChange(() => Timetable);
    }
}

有DayInfo.cs:

public class DayInfo : IValue
{
    public string DayName { get; }
    public List<ExamEntry> Exams { get; }
    ...
}

ExamEntry.cs:

public class ExamEntry : DayEntry, IValue
{
     public string Description { get; }
     ...
}

XAML 代码:

<ItemsControl
               ItemsSource="{Binding Timetable}">
                   <ItemsControl.ItemsPanel>
                          <ItemsPanelTemplate>
                              <StackPanel
                                  Orientation="Horizontal" />
                          </ItemsPanelTemplate>
                   </ItemsControl.ItemsPanel>
                   <ItemsControl.GroupStyle>
                       <GroupStyle>
                           <GroupStyle.HeaderTemplate>
                               ...
                           </GroupStyle.HeaderTemplate>
                           <GroupStyle.Panel>
                                <ItemsPanelTemplate>
                                    <StackPanel
                                        Orientation="Horizontal"
                                        Margin="0">
                                    </StackPanel>
                                </ItemsPanelTemplate>
                           </GroupStyle.Panel>
                       </GroupStyle>
                   </ItemsControl.GroupStyle>
                   <ItemsControl.ItemTemplate>
                       <DataTemplate>
                           <StackPanel>
                               <Label
                                   Content="{Binding DayName}" /> <!-- It still works -->
                               <ItemsControl
                                   ItemsSource="{Binding Exams}">
                                   <ItemsControl.ItemTemplate>
                                       <DataTemplate>
                                           <Label
                                               Content="{Binding Description}" /> <!-- It's not displayed -->
                                       </DataTemplate>
                                   </ItemsControl.ItemTemplate>
                               </ItemsControl>
                           </StackPanel>
                       </DataTemplate>
                   </ItemsControl.ItemTemplate>
</ItemsControl>

【问题讨论】:

  • 最里面的 ItemsControl 是否显示正确数量的空项目,或者根本没有项目?

标签: c# wpf data-binding


【解决方案1】:

这段代码一切正常。我忘记了项目的另一部分,其中时间表被窃听。很抱歉造成混乱。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    相关资源
    最近更新 更多