Zwykle elementy sterujące WPF są deklarowane w plikach .xaml, a nie w kodzie źródłowym (pliki .xaml.cs). Czasami jednak potrzebuję użyć niektórych z tych kontroli w kodzie, aby manipulować nimi. Jak mogę uzyskać uchwyt takiej kontroli, jeśli "znajduje się" w pliku xaml?Jak uzyskać dostęp do formantu WPF znajdującego się w ControlTemplate?
Odpowiedz
Można użyć metody FindName() klasy ControlTemplate.
// Finding the grid that is generated by the ControlTemplate of the Button
Grid gridInTemplate = (Grid)myButton1.Template.FindName("grid", myButton1);
Nie jestem pewien, o co prosisz, więc postaram się odpowiedzieć na oba wystąpienia, które interpretuję jako Twoje pytanie.
1) Jeśli chcesz zadeklarować wyraźnego sterowania, a następnie edytować je bezpośrednio, wszystko co musisz zrobić, to ustawić właściwość name jak takie:
<Canvas x:Name="myCanvas"/>
Następnie można uzyskać dostęp do obszaru roboczego poprzez Imię jako takie:
myCanvas.Background = Brushes.Blue;
2) Jeśli szukasz zadeklarować kontrolę rodzajowe, a następnie używać go wiele razy, można zrobić to tak:
<Window>
<Window.Resources>
<Ellipse x:Key="myEllipse" Height="10" Width="10">
</Window.Resources>
</Window>
Następnie można uzyskać dostęp do predefiniowanych kontrolę przy użyciu tej składni w kodzie:
Ellipse tempEllipse = (Ellipse)FindResource("MyEllipse");
Jeśli chcesz użyć resourse jako szablon do wielokrotnych kontroli, dodać X: Shared = „false”.
FindName() zwracał wartość null. FindResource() działało dla mojej aplikacji. Dzięki. – JohnForDummies
- 1. Jak uzyskać dostęp do elementów ControlTemplate w Xamarin Forms
- 2. WPF ControlTemplate do przewijania TreeView Control
- 3. Jak uzyskać dostęp do formantu w HeaderTemplate mojego GridView
- 4. WPF ControlTemplate łamie stylem
- 5. WPF - Zdarzenia na ControlTemplate?
- 6. Jak uzyskać dostęp do zawartości WPF ContentControl?
- 7. Jak uzyskać dostęp do formantu wewnątrz obiektu XAML DataTemplate?
- 8. WPF ControlTemplate częściowe zastąpienie
- 9. Jak dynamicznie zmieniać szablon formantu WPF za pomocą pola wyboru?
- 10. Jak uzyskać dostęp do głównego DataContext w DataTemplate w WPF?
- 11. WPF - Jak uzyskać dostęp do metody zadeklarowanej w App.xaml.cs?
- 12. WPF - Użyj zasobu ControlTemplate w stylu
- 13. Dodawanie paska postępu do tła formantu WPF
- 14. Zdarzenia WPF w ResourceDictionary dla ControlTemplate
- 15. Jak mogę uzyskać dostęp do ListViewItems z ListView WPF?
- 16. Jak zmienić widoczność formantu WPF z ViewModel
- 17. WPF ListBoxItem ControlTemplate łamie niektóre MouseDown/Selection
- 18. Używanie niestandardowego formantu WPF w WinForms
- 19. WPF: Bind to command from ControlTemplate
- 20. Jak uzyskać dostęp do storyboardu w zasobach elementu z XAML?
- 21. Domyślne okno dialogowe WPF ComboBox ControlTemplate
- 22. WPF - usuwanie formantu, który ma DispatcherTimer nie wydaje się odejść
- 23. Jak zmienić rozmiar formantu użytkownika w WPF w czasie wykonywania
- 24. Używanie formantu obrazu w WPF do wyświetlania System.Drawing.Bitmap
- 25. Jak określić etykietę narzędzi dla formantu w stylu z XAML?
- 26. Jak uzyskać dostęp do formantu z menu kontekstowego Menu kontekstowe za pomocą drzewa wizualnego?
- 27. Dostęp do zasobów poprzez kodzie w WPF
- 28. Jak wyodrębnić adres URL z zdania znajdującego się w NSString?
- 29. Jak uzyskać dostęp do RouteTable.Routes.MapHttpRoute?
- 30. Jak uzyskać dostęp do formantu użytkownika na stronie wzorcowej ze strony treści?
To było zwracanie wyjątku zerowego dla mnie, wtedy uświadomiłem sobie coś podczas wypróbowywania różnych odpowiedzi tutaj na SO: użyj odpowiedzi CSharper, jeśli szablon, którego szukasz - jest zastosowany na myButton1_. Ale jeśli myButton1 jest tylko członkiem tego szablonu, użyj '(Grid) myButton1.FindName (" grid ");' zamiast tego (przydatne w procedurach obsługi przycisków). – Naucle