2012-08-13 12 views
6

Tengo una pantalla con algunos datos. Dentro de la pantalla tengo dos controles personalizados (en el lado izquierdo y derecho).Trabajar con Lightswitch, Silverlight y controles personalizados

Lo que tengo que hacer es la siguiente:

Bind algunos datos de una base de datos para algunos controles en el primer control personalizado. (complete una lista, combobox, etc, no tanto el problema)

El usuario puede seleccionar una entrada en la lista, presionar un botón -> el segundo CustomControl ahora debe hacerse visible; solicite algunos datos del DB, basados ​​en la selección y cree y muestre dinámicamente un Gráfico.

Así que sé cómo construir el gráfico y construir los controles. Pero, ¿cómo puedo acceder a los datos desde la pantalla a través del código y acceder a otro CustomControl desde el primer CustomControl?

Editar:

cosas que encontré a cabo. Control

  1. acceso desde la pantalla

    this.FindControl("yourControl");

  2. hacer algo con el control:

    this.FindControl("yourControl").ControlAvailable += ((o,e) => { YourControlType myControl = e.Control as YourControlType; });

  3. datos de la pantalla de acceso

    IContentItem dataContext = this.DataContext as IContentItem; 
        IScreenObject screen = dataContext.Screen; 
    
        IScreenProperty prop = screen.Details.Properties["yourProperty"]; 
    
        VisualCollection<yourProperty> items = prop.Value as VisualCollection<yourProperty>; 
    
  4. Mostrar nueva pantalla

    Application.Current.Details.Dispatcher.BeginInvoke(() => Application.Current.ShowGraphScreen(reportItem.BlockID));

Tal vez esto ayude a alguien.

+0

+1 solo por las pequeñas gemas sobre cómo acceder a los datos de pantalla. Como los controles personalizados ahora tienen que estar en una biblioteca separada, agregar una referencia al 'Application.common' generado de la aplicación cliente, combinado con sus ejemplos, fue de gran ayuda. –

+0

¿Este enlace sirve de ayuda? [Custom Control Binding] (http://social.msdn.microsoft.com/Forums/en/lsextensibility/thread/394d7968-5210-441a-bf29-3da7001af07d) –

Respuesta

0

Cree una consulta de filtro con un parámetro en la colección en el DB del que desea los datos. Agregue esta consulta a la pantalla y establezca la vinculación de parámetros en FirstCustomControl.

Arrastra la consulta al árbol de la pantalla, cámbiala a un gráfico y verifica el enlace según el enlace de Yann.

A continuación, tendría un código similar al siguiente para mostrar/ocultar el control:

partial void ScreenName_InitializeDataWorkspace(List<IDataService> saveChangesTo) 
{ 
    this.FindControl("SecondCustomControl").IsVisible = False; 
} 

partial void ButtonName_Execute() 
{ 
    this.FindControl("SecondCustomControl").IsVisible = True; 
} 

Desde SecondCustomControl (estoy asumiendo que esto es el gráfico) se une a la consulta y el parámetro de la consulta es atado al valor seleccionado en FirstCustomControl, la recopilación de datos se realiza en segundo plano.

Cuestiones relacionadas