2013-08-01 97 views
1

视觉工作室2012是否支持设计时间的条件符号?我的问题视觉工作室和条件符号

例: 与MVVM模式的WPF应用程序,我直接创建视图模型的实例:

_viewModel = new OrdersViewModel(); 

,但我想用一个有条件的符号设计时仅是这样的:

_viewModel = new OrdersViewModel 
{ 
    Orders = new ObservableCollection<OrderModel>() 
     { 
      new OrderModel(){OrderId = "0e2fa124"}, 
      new OrderModel(){OrderId = "5wqsdgew"}, 
     } 
}; 

肯定条件编译符号不起作用。

+0

可能重复:http://stackoverflow.com/questions/834283/is-there-a-way-to-check-if-wpf-is-currently-executing-in-design-mode-or -不 –

回答

3

您应该在您的视图中使用设计时间DataContext。

事情是这样的:

<Window x:Class="TestForDesignTimeData.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:MyNamespace="clr-namespace:Myproject.MyNamespace" 
     mc:Ignorable="d" 
     Title="MainWindow" > 
    <StackPanel d:DataContext="{d:DesignInstance MyNamespace:OrdersViewModel}"/> 

也请记住,你应该得到OrderViewModel类,并创建一个类的构造函数来填充这些属性。因此,您将使用一个类的设计时间和类似的真实世界。 d:是DesignTime界面

2

您可以使用DesignerProperties.GetIsInDesignMode方法。

_viewModel = new OrdersViewModel(); 
if (DesignerProperties.GetIsInDesignMode(new DependencyObject())) 
{ 
    _viewModel.Orders = new ObservableCollection<OrderModel>() 
    { 
     new OrderModel(){OrderId = "0e2fa124"}, 
     new OrderModel(){OrderId = "5wqsdgew"}, 
    }; 
};