2012-08-13 10 views
6

Mam ekran z niektórymi danymi. Wewnątrz ekranu mam dwa niestandardowe kontrolki (po lewej i prawej stronie).Praca z wyłącznikiem światła, kontrolkami Silverlight i kontrolkami niestandardowymi

Co muszę zrobić jest następujące:

Bind niektóre dane z bazy danych do niektórych kontroli w pierwszej kontroli Custom. (wypełnić listę, combobox itp., Nie tak bardzo problem)

Użytkownik może następnie wybrać pozycję z listy, nacisnąć przycisk -> druga funkcja Custom Control powinna być teraz widoczna; zażądać niektórych danych z bazy danych, na podstawie wyboru i dynamicznie utworzyć i pokazać wykres.

Więc wiem, jak zbudować wykres i zbudować elementy sterujące. Ale w jaki sposób mogę uzyskać dostęp do danych z ekranu za pomocą kodu i uzyskać dostęp do innej funkcji CustomControl z poziomu pierwszej kontrolki CustomControl?

Edit:

Czego dowiedziałem. kontrola

  1. dostęp z ekranu

    this.FindControl("yourControl");

  2. Zrób coś ze sterowaniem:

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

  3. dane ekran Dostęp

    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. Pokaż nowy ekran

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

Może to pomóc komuś.

+0

+1 tylko dla małych klejnotów, jak uzyskać dostęp do danych ekranu. Ponieważ niestandardowe elementy sterujące muszą teraz znajdować się w oddzielnej bibliotece, dodanie odniesienia do wygenerowanej aplikacji "Application.common" aplikacji klienckiej, w połączeniu z przykładami, było bardzo pomocne. –

+0

Czy ten link pomaga? [Custom Control Binding] (http://social.msdn.microsoft.com/Forums/en/lsextensibility/thread/394d7968-5210-441a-bf29-3da7001af07d) –

Odpowiedz

0

Utwórz kwerendę filtru z parametrem w kolekcji w bazie danych, z której mają pochodzić dane. Dodaj to zapytanie do ekranu i ustaw powiązanie parametru na FirstCustomControl.

Przeciągnij zapytanie na drzewo ekranu, zmień je na wykres i sprawdź powiązanie zgodnie z linkiem Yanna.

Będziesz wtedy trzeba kod podobny do poniższego, aby pokazać/ukryć sterowania:

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

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

Od SecondCustomControl (jestem zakładając, jest to wykres) jest zobowiązany do zapytania i parametr kwerendy jest związany do wartości wybranej w FirstCustomControl, zbieranie danych odbywa się w tle.