我创建了一个自定义面板(MyCustomControl),它可以包含其他控件,并通过依赖属性进行配置。在另一个用户控件(MyUserControl)中,我在XAML中配置了多个MyCustomControl的实例。
在用户控件之外,我试图将ItemsControl(myItemsControl)绑定到运行时存在于MyUserControl中的MyCustomControls列表。因此,我通过依赖属性公开了来自MyUserControl的列表。
我从这种策略中遇到了意外的行为。我希望ItemsControl将列表中的每个控件实例作为具有数据值的对象使用,以填充ItemsControl的DataTemplate。但是,它并没有这样做。相反,它基本上忽略了DataTemplate,只是重新呈现列表/ItemsSource中的所有控件。
总之,如果我将控件列表用作ItemsControl的ItemsSource,则它不会将它们用作数据对象,而是将它们呈现为控件实例。
令人惊讶的是,如果我尝试做同样的事情,但使用ListBox而不是ItemsControl,则数据绑定按预期工作。我不想出于其他原因使用ListBox。有人知道影响此行为的ListBox和ItemsControl之间的区别是什么吗?
在用户控件之外,我试图将ItemsControl(myItemsControl)绑定到运行时存在于MyUserControl中的MyCustomControls列表。因此,我通过依赖属性公开了来自MyUserControl的列表。
我从这种策略中遇到了意外的行为。我希望ItemsControl将列表中的每个控件实例作为具有数据值的对象使用,以填充ItemsControl的DataTemplate。但是,它并没有这样做。相反,它基本上忽略了DataTemplate,只是重新呈现列表/ItemsSource中的所有控件。
总之,如果我将控件列表用作ItemsControl的ItemsSource,则它不会将它们用作数据对象,而是将它们呈现为控件实例。
令人惊讶的是,如果我尝试做同样的事情,但使用ListBox而不是ItemsControl,则数据绑定按预期工作。我不想出于其他原因使用ListBox。有人知道影响此行为的ListBox和ItemsControl之间的区别是什么吗?
编辑:我发现另一个用户也遇到了同样的问题,但没有列出解决方案,这里是msdn社交论坛帖子。