Mam listę elementów w siatce danych WPF. Jako źródło używam ObservableCollection. Jedna z kolumn jest również powiązana z polem wyboru do właściwości bool kolekcji. W tym samym oknie poza siatką mam również przycisk. Chcę, aby przycisk był wyłączony, jeśli nie ma rekordu z zaznaczonym polem wyboru = wszystkie elementy mają ustawioną właściwość bool na false.
Myślę, że nie byłoby żadnego problemu, aby zrobić to w codebehind, ale staram się to zrobić w bardziej wpf sposób, używając stylów, wyzwalaczy itp. Ale nie wiem, jak to zrobić.
Odpowiedzi:
2 dla odpowiedzi № 1Sugerowałbym zastosowanie metody MVVM, która polega na utworzeniu pliku Command
który jest DataBound do Button
. Jeśli nie używasz już frameworka MVVM, jest ich kilka.
W pryzmacie (jedna możliwość) DelegateCommand
ma CanExecute
przekazać, które możesz wdrożyć. To CanExecute
metoda oceni następnie ObservableCollection
przedmiotów i zdecyduj, czy Command
może być wykonany (włączony) lub nie (wyłączony). Jeśli ta metoda zwróci false, przycisk zostanie wyłączony.
Wszystkie inne frameworki MVVM będą miały podobne Command
skonstruować.
Dokumentacja pryzmatu zawiera świetną dokumentację tego i innych działań związanych z MVVM. Dokumentacja i przykłady specyficzne dla polecenia można znaleźć tutaj.