2011-08-25 13 views
20

Łączę ViewModels z ContentControls i pozwalam Caliburnowi dbać o tworzenie i oprawianie widoku. Chciałbym jednak dostosować Caliburns ViewModel-> View, w oparciu o którą wiążę ContentControl.Inny widok w zależności od ContentControl (Caliburn.Micro)

Na przykład, zwykły ContentControl, chcę zwykły View to bind (SomethingViewModel -> SomethingView). Ale w przypadku niektórych ContentControl, chcę Caliburn, aby pobrać widok o nazwie np. SomethingViewSpecial. Czy to jest możliwe?

Odpowiedz

32

Tak, jest to możliwe.

Użyj podłączonej właściwości, a następnie nadaj nazwę widoku dla określonego kontekstu, takiego jak YourNamespace.Something.ContextView (usuń "ViewModel" z nazwy modelu widoku, dodaj kropkę i wartość właściwości Kontekst).

Dzięki temu można nawet powiązać kilka widoków z jednym modelem widoku.

przykład:

<ContentControl x:Name="Toolbar" cal:View.Model="{Binding ActiveItem}" cal:View.Context="Toolbar" /> 

można zobaczyć przykład here pracy (od CoProject wprowadzeniu próbki part 9).

+0

Dzięki za odpowiedź, bardzo pomocne w moim projekcie. –

Powiązane problemy