Mam polecenia, które ja wykonywanie od mojego pliku XAML stosując następującą standardową składnię:Przechodząc dwa parametry polecenia przy użyciu WPF wiążących
<Button Content="Zoom" Command="{Binding MyViewModel.ZoomCommand}"/>
To działało w porządku, aż zdałem sobie sprawę, że muszę dwie informacje od widoku w celu wykonania tej operacji w sposób zgodny z oczekiwaniami użytkowników (szerokość i wysokość płótna).
Wydaje się, że to możliwe, aby przekazać tablicę jako argument do mojego polecenia, ale nie widzę tam będąc sposób określić wiązanie do moich dwóch właściwości płótnie w CommandParameter:
<Button Content="Zoom"
Command="{Binding MyViewModel.ZoomCommand"
CommandParameter={Binding ElementName=MyCanvas, Path=Width}"/>
Jak przekazać zarówno szerokość, jak i wysokość do mojego polecenia? Wydaje się, że nie jest to możliwe za pomocą poleceń z XAML i muszę podłączyć obsługę kliknięcia w moim kodzie, aby przekazać tę informację do mojej metody powiększania.
Dzięki Kent - To było dokładnie to, czego szukałem. Najbardziej podoba mi się twoje pierwsze podejście, aby VM znała "stan" widoku poprzez wiązanie bez konieczności przekazywania parametrów, ale wciąż mogę go przetestować. Nie jestem pewien, czy będzie to działało dla mnie tutaj, ponieważ potrzebuję widoku, aby płótno było jak największe i przekazałem tę wartość do VM. Jeśli go zwiążę, czy nie będę musiał ustawić szerokości w VM? W takim przypadku maszyna wirtualna jest związana z widokiem? – JasonD
@Jason: możesz to zrobić w dowolny sposób. Oznacza to, że widok powoduje przejście z powrotem do modelu widoku lub model widoku przesuwa zmiany do widoku. Wiązanie TwoWay spowoduje, że którakolwiek opcja będzie dostępna. –
w moim programie parametr metody OnExecute jest tablicą z wartościami zerowymi, ale w konwerterze wartości są zgodne z oczekiwaniami. –