我在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>
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文件中引用其中一个元素。
任何提示?
答案 0 :(得分:1)
你真的想使用DesignData吗?说实话,我从来没用过这种方式。从我的头脑中,我这样做的方式更多的是创建一个“MockMainViewModel”类,它将是一个派生自“MainViewModel”的类,并且在这个MockMainViewModel的构造函数中,你将能够添加任何项目你想要你的集合,因此要设置你的GroupingViewModel.SelectedItem属性。然后只需将d:DataContext属性设置为新创建的MockMainViewModel的新实例