0

グリッドと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を同期する最もクリーンな方法は何ですか?

4

1 に答える 1

0

2 つのビュー モデルを 1 つの Remark プロパティを持つマスター ビュー モデルに結合します。必要でない場合は、同期の必要性を導入しないでください。

于 2012-08-06T23:16:43.717 に答える