wpf ElementHost no se muestra

estoy teniendo un pequeño problema con esto ElementHost cosa. ¿Puede alguien echar un vistazo a lo que tengo y decirme qué está pasando o por qué no se muestra? Todo parece funcionar, es solo que no puedo ver el ElementHost mostrar/actualizar en la pantalla (control de usuario).

prueba.cs.designer

this.TestHost.Dock = System.Windows.Forms.DockStyle.Fill;
this.TestHost.Location = new System.Drawing.Point(5, 5);
this.TestHost.Name = "TestHost";
this.TestHost.Size = new System.Drawing.Size(1139, 213);
this.TestHost.TabIndex = 1;
this.TestHost.Text = "elementHost1";
this.TestHost.Child = this.testview1;
this.TestHost.Visible = true;

Prueba.cs

private void btnTest_Click(object sender, EventArgs e)
{
    LoadView(item);
}

public void LoadView(Person item)
{
    TestHost.Child = this.testview1; //name given when drag/drop .. should still reference wpf TestView xaml

    try
    {
        if (item != null)
        {
            // TestView is WPF xaml/View                
            TestView view = new TestView();
            view = (TestView) TestHost.Child;
            //TestViewModel is a viewmodel

            TestViewModel vm = (TestViewModel) view.DataContext;
            //load items from viewmodel             
            vm.LoadItems(item);
        }   

        TestHost.Visible = true;
    }
    catch(Exception ex)
    {
        ex.ToString();
    }
}

preguntado el 27 de julio de 12 a las 17:07

No estoy seguro de lo que está tratando de hacer, pero puede escribir en lugar de TestHost.Visible = true;, TestHost.Visibility = Visibility.Visible -

@Dante: solo quiero mostrar la Vista en mi formulario y TestHost.Visibility = Visibility.Visible no funciona porque todo está en Test.cs. -

Ante todo, ¿por qué es visible=falso al principio? Ahora, después de configurarlo para que sea visible, llame al método 'Actualizar' para forzar el renderizado:

@Luis Filipe: si configuro el fondo en rojo en el diseñador, veo el fondo de elementhost lleno de rojo. sin embargo, no muestra la vista que quiero ver. He probado tu sugerencia pero sin éxito. ¿algunas ideas? -

Tiene un Windows Form con un host de elementos, ¿verdad? ¿Arrastró y soltó su control de usuario de WPF en el formulario de Windows? -

1 Respuestas

A partir de su código, parece que está configurando su hijo elementhost en una Clase en lugar de una instancia de la misma (que no se compilaría). Mi pregunta es ¿De dónde viene la instancia de TestView?

TestHost.Child = TestView;

Para depurar, en su bloque try/catch cambie 'ex.ToString()' para mostrar un cuadro de mensaje; Si ocurre una excepción, lo sabrá.

Respondido 30 Jul 12, 09:07

Arrastré y solté mi control de usuario wpf y actualizó al niño por mí. Configuré visible = true también y cuando lo ejecuté, veo mi vista, pero no veo mis datos poblados dentro de mi vista, aunque cuando paso por ella y paso el mouse sobre "vm", veo la información correcta. - Calvin

¿De qué viene "TestView"? ¿Es una BindingList? ¿Cómo lo vinculas a tu control de usuario? Considere editar su pregunta para incluir estos, por favor: luis filipe

TestView es el nombre de la vista. Entonces, estaba viendo un ejemplo y al usar elementhost, mi pensamiento inicial es que cuando se ejecuta "LoadItem" en el modelo de vista, esto actualizaría automáticamente la vista porque este "LoadItem" ejecuta un procedimiento almacenado en el modelo de vista para devolver los datos . ¿Esto tiene sentido? Como dije, cuando paso el mouse sobre "vm.LoadItems(item);" una vez que se ejecuta esto, vm tiene todos los datos correctos. Mi único problema es que el elemento host que contiene la vista WPF "TestView", no se actualiza en mi control de usuario. Más o menos, muestra la vista sin ningún dato. - Calvin

No puedo entender completamente cómo vincula sus datos en la instancia 'TestView' al UserControl. ¿Lo haces por XAML? Debe decirle al UserControl qué datos mostrar. - luis filipe

por favor, eche un vistazo a lo que he editado. Sí, creo que hago esto por xaml. Entonces, ¿cómo le digo al control de usuario que muestre qué datos? ¿Puedes mostrarme un ejemplo de cómo hacerlo? He estado dando vueltas durante unos días y realmente agradecería su ayuda. - Calvin

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.