wpf – 如何在Expression Blend中使用CollectionViewSource和设
发布时间:2020-12-14 05:41:10 所属栏目:Windows 来源:网络整理
导读:我想知道如何使用CollectionViewSource在Expression Blend中显示设计时间数据,该数据位于SampleData.xaml中?在更改我的代码以使用CVS之前,我使用了一个ObservableCollection.我需要对其中的项进行过滤和排序,因此我更改了代码以使用CVS.现在,我的设计师抱怨
我想知道如何使用CollectionViewSource在Expression Blend中显示设计时间数据,该数据位于SampleData.xaml中?在更改我的代码以使用CVS之前,我使用了一个ObservableCollection.我需要对其中的项进行过滤和排序,因此我更改了代码以使用CVS.现在,我的设计师抱怨无法使用适当的结构填充SampleData的NextItems以显示在Expression Blend中.这是我在app中使用的一些代码:
MainViewModel.cs class MainViewModel { public MainViewModel() { AllItems = new ObservableCollection<ItemViewModel>(); NextItems = new CollectionViewSource(); NextItems.Source = AllItems; } public CollectionViewSource NextItems { get; private set; } public ObservableCollection<ItemViewModel> AllItems { get; private set; } some functions to fill,filter,sort etc... } MainView.xaml: <phone:PhoneApplicationPage ... some other stuff ... d:DesignWidth="480" d:DesignHeight="728" d:DataContext="{d:DesignData SampleData/SampleData.xaml}"> <Grid x:Name="LayoutRoot" Background="Transparent"> <controls:Panorama> <controls:PanoramaItem> <ListBox ItemsSource="{Binding NextItems.View}"> <ListBox.ItemTemplate> <DataTemplate> <StackPanel> <Image Source="{Binding Image}" /> <StackPanel> <TextBlock Text="{Binding FullName}" /> </StackPanel> </StackPanel> </DataTemplate> </ListBox.ItemTemplate> </ListBox> </controls:PanoramaItem> </controls:Panorama> </Grid> </phone:PhoneApplicationPage> SampleData.xaml <local:MainViewModel xmlns:local="clr-namespace:MyAppNamespace" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:swd="clr-namespace:System.Windows.Data;assembly=System.Windows" > <local:MainViewModel.AllItems> <local:ItemModel FullName="Dummy" Image="/Images/dummy.png" /> </local:MainViewModel.AllItems> <local:MainViewModel.NextItems> How to fill the CollectionViewSource's Source? </local:MainViewModel.NextItems> </local:MainViewModel> 所以我找不到答案的问题是如何在SampleDate.xaml中填充NextItems的Source?任何帮助将非常感激. 解决方法
如果你想在设计器中显示样本数据,我建议你从代码中进行.有两种方法可以为Blend Designer或VStudio设计器生成样本数据:
>像你一样从XML文件. 最好的选择. 在WPF中,在Windows 8以及WP7.5和更高版本中,您可以访问一个名为:Windows.ApplicationModel.DesignMode.DesignModeEnabled的属性,利用它可以从视图模型中为您的ObservableCollection设定种子: public class MainViewModel { public MainViewModel() { AllItems = new ObservableCollection<ItemViewModel>(); if (DesignMode.DesignModeEnabled) { AllItems = FakeDataProvider.FakeDataItems; } NextItems.Source = AllItems; } public CollectionViewSource NextItems { get; private set; } public ObservableCollection<ItemViewModel> AllItems { get; private set; } } 通过这种方式,如果您更改模型,则不必重新生成XML文件,从C#文件中可以更清晰一些. FakeDataProvider是一个静态类,其中存储了所有设计时伪造数据.因此,在XAML中,您唯一需要做的就是将Listbox绑定到ViewModel的集合. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- active-directory – 在Windows Server 2012上安装Active D
- Windows上简单的构建过程自动化
- windows-server-2003 – 我如何故意破坏特定文件? (NTFS)
- windows-phone-7 – CameraCaptureTask仅返回WP7中分辨率为
- win 下通过dos命令格式化磁盘
- .NET(wpf)应用程序的内存管理
- 在Win7上加载rJava包时出现问题
- windows – 如何监控硬盘是否处于待机状态?
- windows – 如何使用纯c或linux-shell或dos-commands创建超
- windows – Orchestrator 2012 vs 2016
推荐文章
站长推荐
热点阅读