2011-01-20 13 views
7

Rozpoczynam wstępny projekt aplikacji ogólnego przeznaczenia do wykorzystania w mojej organizacji. Program musi być zarówno ogólny, jak i specjalistyczny w tym samym czasie. Będzie zawierał widżety wspólne dla wszystkich przepływów pracy i unikalnych widgetów (lub ograniczeń wejściowych) dla poszczególnych przepływów pracy. Aby uniknąć 97 różnych zdarzeń jednorazowych, planujemy zbudować zestaw schematów dla każdego przepływu pracy. W czasie wykonywania użytkownik wybierze swój schemat z serwera, a GUI wygeneruje odpowiednie widżety dla ich przepływu pracy.Dynamicznie generowany GUI

To aplikacja C#, która będzie działać w .Net i być może w trybie Mono. Oznacza to, że patrzymy na GTK #, oprócz XAML i MonoMac.

Rozważaliśmy napisanie XSLT's dla naszego docelowego zestawu narzędzi GUI. Na przykład:

  • A Glade XSLT do konwersji naszych XSD do XML libglade.

  • XAML XSLT, aby przekonwertować nasze XSD na XAML.

  • Ogólny format XML dla innych zestawów narzędzi, które nie obsługują deklaratywnej składni dla GUI.

  • Biblioteka klas do bezpośredniego odczytu XSD i generowania GUI.

Moje pytanie brzmi: czy to już istnieje? Czy istnieje zestaw narzędzi workflow dla GTK # i libglade lub WPF i XAML.

Odpowiedz

1

Spójrz na System.Windows.DataTemplate, które mogą być używane automatycznie przez WPF (patrz właściwość DataType). Myślę, że możesz wyodrębnić wszystkie bloki UI, które będą używane do generowania interfejsu użytkownika, a następnie implementacji ViewModels i odpowiednich DataTemplates. I wynikowy interfejs użytkownika będzie złożonym modelem widoku tego bloku.

+0

Jestem świadomy szablonów. Chociaż jest użyteczny, nie adresuje XSLT, aby dostać się do właściwego XAML. Nie jest to platforma wieloplatformowa. Szablony mogą równie dobrze być jednym z narzędzi, których używam, jeśli skończę kierować WPF zamiast GTK, ale pomiędzy nimi musi być dużo kleju. – Nate

0

Zrobiłem to samo, używając XML. Co robię, to zapisanie zestawu właściwości poszczególnych kontrolek do pliku XML, a następnie odczytanie z niego później i ponowne wygenerowanie tego okna.

Some problems I met while doing so

Ale udało mi się go ukończyć. W każdym razie myślę, że WPF jest lepszy. Ale jeśli chcesz pomysłu, myślę, że ci po prostu dałem. (Może nie jest to najlepszy pomysł)

Powodzenia

+0

Naprawdę nie próbuję zapisywać właściwości kontrolek. To jest podobne. Ale próbuję zdefiniować zestaw danych wejściowych, które są wymagane dla danego przepływu pracy. Ta część byłaby w XSD. GUI przechwytuje albo sam XSD, albo XSLT dla niego. Następnie generuje GUI na podstawie XAML lub libglade XML z transformacji XSLT lub tworząc GUI z XSD. – Nate

Powiązane problemy