グリッドとTabControlを表示する必要があるビューが1つあります。Note(Remark)プロパティのようなものを表示するグリッド上に1つの列があります。このフィールドには大量のデータが含まれる可能性があるため、TextBoxコントロールを備えたタブを1つ作成します。これにより、ユーザーはメモを表示/編集できますが、グリッド列にはメモの最初の文字が数文字しか表示されません。
関連する部分のみを投稿します。
public classSomeViewModel : ViewModelBase
{
public SomeViewModel()
{
TabScreens = New List<ViewModelBase>();
TabScreens.Add(new AnotherViewModel1());
TabScreens.Add(new AnotherViewModel2());
}
List<ViewModelBase> TabScreens{get;set;}
}
SomeView xaml:
<DataTemplate DataType="{x:Type vm:AnotherViewModel1}">
<vw:AnotherView1 />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:AnotherViewModel2}">
<vw:AnotherView2 />
</DataTemplate>
AnotherView2:
<Grid>
<TextBox Text={Binding Note} />
</Grid>
AnotherViewModel2:
public class AnotherViewModel2
{
public string Note {get;set;}
}
}
したがって、ViewのTabControlはTabScreensにバインドされます。DataTemplatesは、SomeViewがロードされるときにAnotherView1とAnotherView2の両方がロードされることを保証します。グリッドの各行には、異なるコメントが含まれています。SomeViewModelRemarkとAnotherViewModel2Remarkを同期する最もクリーンな方法は何ですか?