使用ItemSource设置为ObservableCollection的UserControls的ItemsControl无法在可视树中呈现。
问题的原因是"TestEntryView.Fields"属性没有实现依赖项属性(DependencyProperty)或引发属性更改通知(PropertyChanged事件)。解决方法是将该属性改为依赖项属性或让它引发属性更改通知。
要将其改为依赖项属性,可以按照以下步骤进行操作:
public ObservableCollection<TestFieldView> Fields { get { return (ObservableCollection<TestFieldView>)GetValue(FieldsProperty); } set { SetValue(FieldsProperty, value); } } public static readonly DependencyProperty FieldsProperty = DependencyProperty.Register("Fields", typeof(ObservableCollection<TestFieldView>), typeof(MainWindow), new UIPropertyMetadata(new ObservableCollection<TestFieldView>()));
注意,上述代码中的MainWindow应替换为你的实际窗口类名。
如果属性已经是依赖项属性或实现了INotifyPropertyChanged接口,并且仍然无法正确渲染,请检查其他可能的原因。
问题出现的原因是ItemsControl的ItemsSource绑定到了一个ObservableCollection
解决方法是添加TestFieldView的样式或DataTemplate,并且定义ItemsPanelTemplate。可以参考以下代码:
如果还是无法解决问题,可以尝试将ItemsControl替换为ListView,这样至少可以显示一个类名的列表,然后再进行调整。
另外,可能对你有用的是这个链接:galasoft.ch/mydotnet/articles/article-2007041201.aspx