1

Visual Studio 2012 はデザイン時の条件付きシンボルをサポートしていますか?

私の問題の例: MVVM パターンを使用する WPF アプリケーションで、ViewModel のインスタンスを直接作成します。

_viewModel = new OrdersViewModel();

しかし、私は次のように設計時にのみ条件付きシンボルを使用したい:

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

確かに、条件付きコンパイル シンボルは機能しません。

4

2 に答える 2

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 クラスを派生させ、それらのプロパティを埋めるコンストラクターを持つクラスを作成する必要があることにも注意してください。したがって、設計時に 1 つのクラスを使用し、現実の世界でも同様のクラスを使用します。d: は DesignTime インターフェイスです

于 2013-08-01T12:32:00.220 に答える
2

メソッドを使用できますDesignerProperties.GetIsInDesignMode

_viewModel = new OrdersViewModel();
if (DesignerProperties.GetIsInDesignMode(new DependencyObject()))
{
    _viewModel.Orders = new ObservableCollection<OrderModel>()
    {
        new OrderModel(){OrderId = "0e2fa124"},
        new OrderModel(){OrderId = "5wqsdgew"},
    };
};
于 2013-08-01T12:32:37.197 に答える