为 Windows Phone应用使用设计时数据,适用于字符串, int 等。 (例如这里:人名,人年龄),但是当我喜欢为“嵌套对象”(例如这里:公司/雇主)做这件事时,我不知道如何在design-time-data-XAML文件中这样做。 / p>
公司
public class Company
{
public string Name { get; set; }
public int Size { get; set; }
}
人:
public class Person
{
public int Age { get; set; }
public string Name { get; set; }
public Company Employer { get; set; }
}
PersonViewModel.cs:
“正常”ViewModel,它实现了INotifyPropertyChanged并具有我想要显示的所有数据的属性。
PersonViewModelSampleData.xaml:
<local:PersonViewModel
xmlns="http:schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http:schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Hfr.BlaBla.ViewModels"
Name="Harald-René Flasch"
Age="36">
</local:PersonViewModel>
人物页面XAML:
<TextBlock
Text="{Binding Path=Employer.Name}"
Style="{StaticResource PhoneTextLargeStyle}"
TextWrapping="Wrap" ... />
因此, Path = Employer.Name 在运行时工作正常,但我不知道如何为设计时支持提供该数据。有什么建议吗?
答案 0 :(得分:1)
我不理解您的示例数据:它将是Person
的实例或PersonViewModel
的实例(但在这种情况下,viewModel应具有类型Company
的属性或Person
或两者。)
如果您的样本数据是Person的实例:
<local:Person
xmlns="http:schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http:schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Hfr.BlaBla.MyModelsNamespace"
Name="Harald-René Flasch"
Age="36">
<local:Person.Employer>
<local:Company Name="MyCompany"/>
</local:Person.Employer>
</local:Person>
注意命名空间:这里“本地”xmlns引用模型命名空间(而不是viewModel)。
编辑:
如果您的示例数据是viewModel,则假设您的ViewModel为属性Employer
,其中包含Company
类型的setter(不仅是getter):
<local:PersonViewModel
xmlns="http:schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http:schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Hfr.BlaBla.ViewModels"
xmlns:myModel="clr-namespace:Hfr.BlaBla.MyModelsNamespace"
Name="Harald-René Flasch"
Age="36">
<local:PersonViewModel.Employer>
<myModel:Company Name="MyCompany"/>
</local:PersonViewModel.Employer>
</local:PersonViewModel>