设计时间数据

时间:2012-10-04 21:55:01

标签: c# wpf windows-phone design-time-data

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 在运行时工作正常,但我不知道如何为设计时支持提供该数据。有什么建议吗?

1 个答案:

答案 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>