【问题标题】:WPF design time ICollectionView binding silently failsWPF 设计时 ICollectionView 绑定静默失败
【发布时间】:2019-07-29 09:39:10
【问题描述】:

ICollectionViewObservableCollection<ItemVM>(目前)都从视图模型中公开:

public ICollectionView ItemsView
{
    get => !IsInDesignMode ? _itemsView :
            CollectionViewSource.GetDefaultView(new ObservableCollection<Item>());
    set => Set(ref _itemsView, value));
}

public ObservableCollection<Item> Items
{
    get => _items;
    private set => Set(ref _items, value);
}

并且它们都绑定到ItemsSourceDataGrid

<StackPanel d:DataContext="{d:DesignInstance Type={x:Type vm:ItemsTestVM}}">
    <DataGrid Name="DG1" ItemsSource="{Binding Items}"/>
    <DataGrid Name="DG2" ItemsSource="{Binding ItemsView}"/>
</StackPanel>

虽然 both 在运行时显示项目,但只有 DG1(可观察绑定的)在设计时显示(三个虚拟)行。
为什么会这样?我该如何解决这个错误?

【问题讨论】:

    标签: c# wpf xaml icollectionview


    【解决方案1】:

    根据您所展示的,它静默工作...因为设计时逻辑不会返回一个可行的数据集来展示;只是一个可观察的空集合

    仅在设计模式下,会返回一个空视图,因为您必须在 Items 属性(有效)中执行的任何(设计时)现有数据之间没有关联。

    查看视图的创建...可观察的集合在哪里获取数据?

      CollectionViewSource.GetDefaultView(new ObservableCollection<Item>())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-03
      • 2014-01-04
      • 1970-01-01
      • 1970-01-01
      • 2014-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多