0

GridViewコントロールを備えたビューページがあります。グリッド内のアイテムは、次のxamlを含むポップアップChildwindowsを使用して編集されます。

        <toolkit:DataForm.EditTemplate>
            <DataTemplate>
                <StackPanel>

                    <toolkit:DataField Label="Avisar a: ">
                        <ComboBox ItemsSource="{Binding Path=Sucursales}"/>
                    </toolkit:DataField>

                    <toolkit:DataField Label="Mensaje:">
                        <TextBox Text="{Binding mensaje, Mode=TwoWay}"/>
                    </toolkit:DataField>

                    <toolkit:DataField Label="Estado: ">
                        <ComboBox ItemsSource="{Binding Path=EstadosMensaje}"/>
                    </toolkit:DataField>

                </StackPanel>
            </DataTemplate>
        </toolkit:DataForm.EditTemplate>

    </toolkit:DataForm>

このポップアップへのDataContextは、次のように親ビューからビューコンストラクターに挿入されます。

AlertaForm frm = new AlertaForm(DataContext as AlertasViewModel);
frm.Show();

//ChildWindows constructor
public AlertaForm(AlertasViewModel viewModel){
  InitializeComponent();
  DataContext = viewModel;
}

ご覧のとおり、ChildWindowsと親ビューは同じViewModelを共有しています。問題は、ComboBoxコントロールにデータが入力されないことです。TextBoxフィールドは正しくバインドされており、DataContextプロパティの値が表示されます。これは、DataFormがChildWindowsAlertaFormに渡されたViewModelを認識することを証明しているため混乱を招きます。明らかに私はここで何かが欠けていますが、それが何であるかを理解することはできません。ありがとう

4

1 に答える 1

0

結局、DataFormを使用してユーザーコントロールを破棄し、共通のコントロールを使用してChildWindowsに固定します。DataFormは複雑なシナリオには向いていないようです

于 2013-08-02T15:19:29.320 に答える