0

我有一个带有 GridView 控件的视图页面。使用带有以下 xaml 的弹出子窗口编辑网格中的项目:

        <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 识别传递给 ChildWindows AlertaForm 的 ViewModel。显然我在这里遗漏了一些东西,但无法弄清楚是什么。谢谢

4

1 回答 1

0

我最终将用户控件与 DataForm 一起丢弃在 ChildWindows 中并带有公共控件。看来 DataForm 对复杂场景不友好

于 2013-08-02T15:19:29.320 回答