マスター/詳細ビューを実装しようとしましたが、選択した項目を2つのDataTemplateを持つUserControlにバインドする方法を理解しようとしました。UWPはListViewの項目をUserControl DataTemplateとしてバインドします
は、私がモデルの2種類があります(私は彼らに教師と生徒を呼ぶことにします)
マイビューモデル:
public class Page_ProfilVM : NotificationBase
{
public ObservableCollection <AbstractInfosProfilVM> InfosProfil { get; set; }
private AbstractInfosProfilVM selectedProfil;
public AbstractInfosProfilVM SelectedProfil
{
get { return selectedProfil; }
set
{
SetProperty(selectedProfil, value,() => selectedProfil = value);
}
}
}
public abstract class AbstractInfosProfilVM : NotificationBase
{
private string nom;
public string Nom
{
get { return nom; }
set { SetProperty(nom, value,() => nom = value); }
}
}
public class TeacherInfosProfilVM : AbstractInfosProfilVM
{
}
public class StudentInfosProfilVM : AbstractInfosProfilVM
{
}
は私が正しくマスタービューを表示
<!-- ListView -->
<ListView ItemSource="{x:bind ViewModel.Profils}"
SelectionMode="Single"
SelectedItem="x:bind ViewModel.SelectedProfil, Mode="TwoWay", Converter={.....}}">
<ListView.ItemTemplate>
<DataTemplate x:DataType="vm:AbstractProfilVM">
<!-- Master -->
<widget:CelProfilMaster CelProfilMasterName={x:Bind Name} CelProfilMasterAge={x:Bind Age} ... />
</DataTemplate>
</ListView.ItemTemplate>
詳細ビュー(依存プロパティを持つユーザーコントロール)で、選択したアイテムの詳細を正しく表示します。しかし、今私は教師の属性と学生の属性を示すために適切なdataTempalteを選択する必要があります。しかしそれは働かない。
私は教師/生徒の名前を表示しようとしますが、ビューモデルの名前のみを表示します。 教師の属性と学生の属性を "CelluleProfilDetails.CelluleProfilDetailsContent"に正しく表示するにはどうすればよいですか?
回答ありがとうございました 多分私は間違っていますが、私は2つのdataTemplateを2つのxと使用しています:異なるデータタイプ、datatempalteselectorは必要ありませんか? 私のObservableCollectionは2つのDataTypeのみを使用し、私のSelectedProfilはTeacherInfosProfilVMまたはStudentInfosProfilVMです。 私の問題は、正しいdataTempalteでNomや他の属性にアクセスできないのですか? (代わりに、dataTempalteの名前が表示されます) – sasukaru
ありがとう、DataTemplateSelectorは私の問題を解決しました=) – sasukaru