nie jestem pewien, czy mój nagłówek pytanie reprezentują dokładnie mój problem, zrobię najlepiej wyjaśnić:Wiele DataContext dla jednej kontroli - MVVM
Mam DataTemplate komórek siatki (siatka należą do spółki przez osoby trzecie ale nie `s ważne dla mojego pytania
<DataTemplate>
<TextBlock>
<Hyperlink Command="{Binding OpenLinkCommand}">
<Hyperlink.ToolTip>
<TextBlock Text="{Binding Data.MapLink}"/>
</Hyperlink.ToolTip>
<TextBlock Text="{Binding Data.MapLink}" TextDecorations="underline">
</Hyperlink>
</TextBlock>
</DataTemplate>
chcę uczynić ten DataTemplate aby pokazać pewne hiperłącza („Data.MapLink”jest obiektem, który zawiera wartość linku) i każde kliknięcie na ten link pożaru) polecenie "OpenLinkCommand".
Problem polega na tym, że „Data.MapLink” i „OpenLinkCommand” znajdują się w różnych DataContext a następnie trzeba wybrać jedną z kolejnych wyborów:
urlopu hiperłącze DataContext jak to - wygranego polecenia `t działa, a hiperłącze otrzyma wartość Data.MapLink.
zmiana danych hiperłączaKoniec do polecenia datacontext - Polecenie będzie działać, ale nazwa hiperłącza będzie pusta.
żalem Nie znam mają możliwość umieścić te elementy w tej samej DataContext więc muszę znaleźć sposób, jak powiedzieć, że polecenie DataContext jest „X” i powiedzieć, że hiperłącze DataContext jest „Y”.
Mam nadzieję, że moje pytanie jest jasne. Jak mogę rozwiązać ten problem?
Skąd pochodzi drugi datacontext? jest związany z elementem, ponieważ możesz powiązać element danych z innym elementem i ustawić względne źródło. Jeśli masz dostęp do obu formatów danych w swoim modelu widoku (zakładając, że używasz viewmodel), możesz pobrać drugie polecenie. – TYY
użyj RelativeSource w bindowaniu, aby znaleźć właściwy datacontext – blindmeis
Właśnie zgłosiłem błąd (innym razem?) Do Microsoft: https://connect.microsoft.com/VisualStudio/feedback/details/1398835/binding-of-readonly-dependencyproperty –