2013-08-01 3 views
1

Визуальная студия 2012 поддерживает условные символы для времени разработки?Визуальная студия и условные символы

Пример моей проблемы: В приложении WPF с MVVM шаблон, я создаю экземпляр ViewModel непосредственно:

_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"}, 
    }; 
}; 
Смежные вопросы