【问题标题】:Visual studio and conditional symbolsVisual Studio 和条件符号
【发布时间】:2013-08-01 12:25:11
【问题描述】:

visual studio 2012 是否支持设计时的条件符号?

我的问题示例: 在具有 MVVM 模式的 WPF 应用程序中,我直接创建了 ViewModel 的实例:

_viewModel = new OrdersViewModel();

但我只想在设计时使用条件符号,如下所示:

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

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

【问题讨论】:

标签: c# wpf visual-studio visual-studio-2012


【解决方案1】:

您应该在视图中使用设计时 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"},
        };
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-21
      • 2018-02-16
      相关资源
      最近更新 更多