Pracuję bez mieszania wyrażeń i po prostu używam edytora XAML w vs2010. Pomijając tę mądrość, coraz częściej dostrzegam potrzebę wiązania danych w czasie projektowania. W prostych przypadkach FallbackValue
właściwość działa bardzo dobrze (pola tekstowe i bloki tekstowe itp.). Ale zwłaszcza w przypadku ItemsControl
i tym podobnych, naprawdę potrzebne są przykładowe dane, które są widoczne w projektancie, aby można było dostosowywać i dostosowywać kontrolki i szablony danych bez konieczności uruchamiania pliku wykonywalnego.
Wiem, że ObjectDataProvider
pozwala to na powiązanie z typem, a tym samym może dostarczyć dane czasu projektowania do wizualizacji, ale jest trochę żonglowania, aby umożliwić powiązanie rzeczywistych danych w czasie wykonywania bez marnowania zasobów poprzez ładowanie zarówno czasu projektowania, dane dummied i powiązania środowiska uruchomieniowego.
Naprawdę potrzebuję możliwości, aby, powiedzmy, „Jan”, „Paul”, „George” i „Ringo” pojawiały się w projektancie XAML jako elementy do stylizacji w moim ItemsControl
, ale rzeczywiste dane pokazują się, gdy aplikacja biegnie.
Wiem również, że Blend pozwala na pewne wymyślne atrybuty, które definiują dane związane z czasem projektowania, które są skutecznie ignorowane przez WPF w warunkach wykonywania.
Więc moje pytania to:
1. W jaki sposób mogę wykorzystać wiązania czasu projektowania kolekcji i nietrywialnych danych w projektancie XAML programu Visual Studio, a następnie płynnie zamienić się na powiązania środowiska uruchomieniowego?
2. Jak inni rozwiązali ten problem z danymi w czasie projektowania i wykonywania? W moim przypadku nie mogę łatwo użyć tych samych danych do obu (jak można by to zrobić, powiedzmy, zapytaniem do bazy danych).
3. Czy ich alternatywy dla mieszanki wyrażeń, których mógłbym użyć do projektowania XAML ze zintegrowanymi danymi? (Wiem, że istnieją alternatywy, ale konkretnie chcę czegoś, czego mogę użyć i zobaczyć powiązane przykładowe dane itp.)
d:DataContext
, możesz znaleźć pomoc w tym pytaniu: stackoverflow.com/questions/8303803/ ...