2012-08-13 9 views
6

Ich habe einen Bildschirm mit einigen Daten. Auf dem Bildschirm habe ich zwei benutzerdefinierte Kontrollen (auf der linken und rechten Seite).Mit Lightswitch, Silverlight und benutzerdefinierten Steuerelementen arbeiten

Was ich tun muss, ist folgende:

Bind einige Daten aus einer Datenbank auf einige Steuerelemente in der ersten Custom Control. (füllen Sie eine Liste, Combobox usw., nicht so sehr das Problem)

Der Benutzer kann dann einen Eintrag in der Liste auswählen, drücken Sie eine Taste -> die zweite CustomControl sollte nun sichtbar gemacht werden; Auf Basis der Auswahl einige Daten aus der Datenbank anfordern und ein Diagramm dynamisch erstellen und anzeigen.

So weiß ich, wie Sie das Diagramm erstellen und die Steuerelemente erstellen. Aber wie kann ich auf die Daten zugreifen vom Bildschirm über Code und Zugriff auf ein anderes CustomControl aus dem ersten CustomControl?

Edit:

Dinge fand ich heraus.

  1. Zutrittskontrolle von Bildschirm

    this.FindControl("yourControl");

  2. Tun Sie etwas mit der Steuerung:

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

  3. Access Daten

    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. zeigen neue Bildschirm

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

Vielleicht wird dies jemand helfen.

+0

+1 nur für die kleinen Edelsteine, wie Sie auf Bildschirmdaten zugreifen. Da benutzerdefinierte Steuerelemente jetzt in einer separaten Bibliothek vorhanden sein müssen, war das Hinzufügen eines Verweises auf das generierte 'Application.common' der Client-App in Kombination mit Ihren Beispielen eine große Hilfe. –

+0

Hilft dieser Link? [Benutzerdefinierte Steuerbindung] (http://social.msdn.microsoft.com/Forums/en/lsextensibility/thread/394d7968-5210-441a-bf29-3da7001af07d) –

Antwort

0

Erstellen Sie eine Filterabfrage mit einem Parameter für die Sammlung in der DB, aus der die Daten stammen sollen. Fügen Sie diese Abfrage dem Bildschirm hinzu, und legen Sie die Parameterbindung auf FirstCustomControl fest.

Ziehen Sie die Abfrage auf den Bildschirmbaum, ändern Sie sie in ein Diagramm, und überprüfen Sie die Bindung gemäß Yanns Link.

Sie würden dann Code müssen ähnlich der folgenden Ein-/Ausblenden der Steuerung:

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

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

Seit SecondCustomControl (Ich gehe davon aus das ist die Grafik) auf die Abfrage gebunden ist und die Parameter der Abfrage gebunden ist, auf den Wert, der in FirstCustomControl ausgewählt wurde, wird die Datenerfassung im Hintergrund ausgeführt.

Verwandte Themen