2012-10-04 61 views
0

使用設計時數據的Windows Phone應用這對於工作正常,INT等(如這裏:人名,人的年齡),但是當我喜歡這樣做對於「嵌套對象」(例如:公司/僱主)我不知道如何在design-time-data-XAML文件中執行此操作。設計時數據

公司:

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:

「普通」 視圖模型,其實現INotifyPropertyChanged和對所有數據I特性想要顯示。

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" ... /> 

所以,路徑= Employer.Name在運行時正常工作,但我不知道如何爲設計時支持提供這些數據。有什麼建議麼?

+0

我想你可以只通過分配FallBackValue執行此操作 –

+0

生成設計時間數據的最簡單方法是使用Blend。 http://visualstudiomagazine.com/articles/2012/07/12/design-time-data-for-windows-phone.aspx和後續文章:http://visualstudiomagazine.com/articles/2012/07/23 /disable-design-time-data.aspx –

回答

1

我不明白您的樣本數據:這將是Person實例或的PersonViewModel一個實例(但在這種情況下,視圖模型應該有Company類型或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指模型命名空間(而不是視圖模型)。

編輯: 如果您的樣本數據的視圖模型,假設您的視圖模型作爲屬性Employer與二傳手(不只是一個getter),Company類型:

<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> 
+0

對不起,使用MVVM模式和設計時數據當然是ViewModel(PersonViewModelSampleData.xaml)。沒有在這裏添加PersonViewModel C#代碼,因爲它沒什麼特別的(實現了我想要顯示的所有屬性並實現INotifyPropertyChanged)。 {綁定路徑= Employer.Name}適用於運行時。 – hfrmobile

+0

@hfrmobile:看我的編輯。 – JYL

+0

是的,你做到了!忘記爲「域模型」添加名稱空間(也忘記了設計器所需的Company域項目的默認ctor)。非常感謝! – hfrmobile