使用CollectionViewSource而不是集合直接打破Visual Studio Designer View?可以解决的?

时间:2013-10-09 17:04:48

标签: c# wpf

嗯,我运气不好,因为很多事情我都以某种方式打破了设计师(Other issue

当我在数据网格视图中使用集合时,我可以在设计器中看到我生成的所有虚拟内容行,但是当我添加集合视图源来对数据进行分组时,这会停止工作。然后整个集合仅在运行时显示。

这是WPF设计师的另一个问题吗?

Repro代码:

查看:

<Window x:Class="CollectionViewSourceDesignerBreak.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:collectionViewSourceDesignerBreak="clr-namespace:CollectionViewSourceDesignerBreak" >
    <Window.DataContext>
        <collectionViewSourceDesignerBreak:ViewModel />
    </Window.DataContext>

    <Window.Resources>
        <CollectionViewSource Source="{Binding Entries}" x:Key="Cvs">
            <CollectionViewSource.GroupDescriptions>
                <PropertyGroupDescription PropertyName="Name"/>
            </CollectionViewSource.GroupDescriptions>
        </CollectionViewSource>

    </Window.Resources>


    <DataGrid ItemsSource="{Binding Entries}" AutoGenerateColumns="True">
    <!--<DataGrid ItemsSource="{Binding Source={StaticResource Cvs}}" AutoGenerateColumns="True">-->

    </DataGrid>
</Window>

虚拟视图模型:

using System.Collections.ObjectModel;

namespace CollectionViewSourceDesignerBreak
{
    public class VMData
    {
        public string Name { get; set; }
        public string MoreInfo { get; set; }

    }
    public class ViewModel
    {
        private ObservableCollection<VMData> _entries = new ObservableCollection<VMData>();
        public ObservableCollection<VMData> Entries
        {
            get { return _entries; }
            set { _entries = value; }
        }

        public ViewModel()
        {
            Entries.Add(new VMData{Name="A", MoreInfo = "Some text"});
            Entries.Add(new VMData{Name="B", MoreInfo = "More text"});
            Entries.Add(new VMData{Name="A", MoreInfo = "Other text"});
        }
    }
}

评论Cvs行和另一行,内容在设计师中消失。

0 个答案:

没有答案