Как указать элемент SelectedItem в выпадающем списке, используя DesignData?
Я делаю приложение в WPF и использую DesignData для ускорения процесса создания пользовательского интерфейса, так как запуск приложения - медленный процесс.
Я не могу найти способ установить SelectedItem комбинированного списка с designdata. Проверьте следующий пример:
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>
ViewModel:
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>();
}
}
И designdata:
<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 ответ
Вы действительно хотите использовать DesignData? Честно говоря, я никогда не использовал это таким образом. В общем, способ, которым я бы сделал это, состоит в том, чтобы создать класс "MockMainViewModel", который будет производным от "MainViewModel", и в конструкторе этого MockMainViewModel вы сможете добавить любой элемент, который вы хотите, чтобы ваша коллекция, и, следовательно, чтобы установить свойство GroupingViewModel.SelectedItem. Затем просто установите свойство d:DataContext для нового экземпляра недавно созданного MockMainViewModel