0

文字列intなど(例:個人名、個人年齢)で正常に機能するWindows Phoneアプリの設計時データを使用しますが、「ネストされたオブジェクト」(例:会社/雇用者)でそれを実行したい場合は、 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を実装し、表示したいすべてのデータのプロパティを持つ「通常の」ViewModel。

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は実行時に正常に機能しますが、設計時のサポートのためにそのデータを提供する方法がわかりません。助言がありますか?

4

1 に答える 1

1

サンプルデータがわかりません。ORPersonのインスタンスまたはのインスタンスになります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

<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>
于 2012-10-05T13:47:32.423 に答える