0

私は WPF でアプリケーションを実行しており、アプリケーションの起動が遅いプロセスであるため、DesignData を使用して UI 作成プロセスを高速化しています。

designdata を使用してコンボボックスの SelectedItem を設定する方法が見つかりません。次の例を確認してください。

XAML:

<Window x:Class="DesignDataTest.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"

    mc:Ignorable="d"

    d:DataContext="{d:DesignData Source=SampleData.xaml}" >

    <ComboBox ItemsSource="{Binding GroupingViewModel.Items}" SelectedItem="{Binding GroupingViewModel.SelectedItem}" DisplayMemberPath="Description" Width="100" Height="30" />
</Window>

ビューモデル:

public class MainViewModel
{
    public GroupingViewModel GroupingViewModel { get; private set; }

    public MainViewModel()
    {
        this.GroupingViewModel = new GroupingViewModel();
    }
}

public class GroupingViewModel
{
    public List<GroupingViewModel> Items { get; private set; }
    public GroupingViewModel SelectedItem { get; set; }

    public string Description { get; set; }

    public GroupingViewModel()
    {
        this.Items = new List<GroupingViewModel>();
    }
}

そしてデザインデータ:

<designDataTest:MainViewModel.GroupingViewModel>
    <designDataTest:GroupingViewModel Description="1">
        <designDataTest:GroupingViewModel.Items>
            <designDataTest:GroupingViewModel Description="1" />
            <designDataTest:GroupingViewModel Description="2" />
            <designDataTest:GroupingViewModel Description="3" />
        </designDataTest:GroupingViewModel.Items>
        <designDataTest:GroupingViewModel.SelectedItem>
            <designDataTest:GroupingViewModel Description="1" />                
        </designDataTest:GroupingViewModel.SelectedItem>
    </designDataTest:GroupingViewModel>
</designDataTest:MainViewModel.GroupingViewModel>

</designDataTest:MainViewModel>

コンボボックスは利用可能な項目コレクションから要素を受け取ることを期待しているようですが、designdata ファイルからそれらの要素の 1 つを参照する方法がわかりません。

ヒントはありますか?

4

1 に答える 1

1

本当に DesignData を使用しますか? 正直なところ、私はこのように使用したことはありません。私の頭の上から、これを行う方法は、「MainViewModel」から派生するクラスになる「MockMainViewModel」クラスを作成することであり、この MockMainViewModel のコンストラクターでは、任意の項目を追加できます。コレクションにしたいので、 GroupingViewModel.SelectedItem プロパティを設定します。次に、d:DataContext プロパティを、新しく作成した MockMainViewModel の新しいインスタンスに設定するだけです。

于 2014-05-14T07:40:48.280 に答える