Jaka jest różnica między TypeConverters i znaczników ExtensionsJaka jest różnica między TypeConverters i znaczników Extensions w WPF
Odpowiedz
TypeConverters są wykorzystywane do niejawnie przekonwertować jednego typu na inny. Na przykład model BrushConverter może przekształcić ciąg "Czerwony" w obiekt SolidColorBrush, którego właściwość Kolor jest ustawiona na czerwony. Tak jak w tym przypadku:
<Button Background="Red" />
MarkupExtension pozwala na dostarczanie bardziej dostosowanych wartości do właściwości. Istnieje również kilka specjalnych rozszerzeń znaczników, bindowanie, wiązanie MultiBinding i DynamicResource. Nie tylko zapewniają one wartość statyczną, ale zapewniają bardziej dynamiczną wartość.
Można więc tworzyć rozszerzenia znaczników, które wykonują te same operacje, co konwertery typów, ale trzeba je jawnie używać, w przeciwieństwie do niejawnego charakteru konwerterów typów.
A TypeConverter jest przeznaczony do konwersji z jednego rodzaju na inny. Jest kilka dostępnych z pudełka, takich jak BrushConverter, ColorConverter, BooleanConverter i tak dalej. Zobacz here, aby uzyskać pełną listę. Co to jest wielki temat konwerterów typu jest to, że mogą one być stosowane do definicji rzeczowych stosując następującą definicję atttribute w definicji klasy ...
[TypeConverterAttribute(typeof(BrushConverter)]
public Brush Background
{
...
}
... realizacja BrushConverter wie, że jeśli odbiera łańcuch jako dane wejściowe, powinien spróbować przekonwertować go do znanej instancji SolidBrush koloru. Oznacza to, że XAML nie należy przypisać rzeczywistą SolidBrushes.Red odniesienie do własności, ale zamiast użyć prostego ciąg ...
<Button Background="Red" />
... to znacznie szybciej pisać i zrozumieć. Jednak TypeConverter jest ZAWSZE wymagane do przypisania własności i nie można zapobiec wywołaniu przez XAML wywołania TypeConvertera.
A MarkupExtension służy do zwracania obiektu, który jest następnie przypisany do określonej właściwości. Jest to bardziej elastyczne, ponieważ możesz zdecydować kiedy i gdzie użyć rozszerzenia MarkupExtension i nie jesteś ograniczony do konkretnych właściwości, które zostały wcześniej oznaczone atrybutem. Przykłady rozszerzeń znaczników to Binding, StaticResource i DynamicResource.
Tak więc konwerter typów doskonale nadaje się do określonych właściwości określonego typu, które mają akceptować większy zakres wartości niż definiuje sam typ. Rozszerzenie znaczników doskonale nadaje się do bardziej ogólnego zastosowania, gdy deweloper decyduje, kiedy i gdzie go używać:
- 1. Jaka jest różnica między WCF i WPF?
- 2. Jaka jest różnica między Reactive-Extensions/RxJS a ReactiveX/rxjs
- 3. Jaka jest różnica między ItemTemplate i ItemContainerStyle w ListBox WPF?
- 4. Jaka jest różnica między poleceniem WPF a zdarzeniem w WPF?
- 5. Jaka jest różnica między System.Windows.Controls.Control i System.Windows.Forms.Control?
- 6. Jaka jest różnica między? : i ||
- 7. Jaka jest różnica między $ i $$?
- 8. Różnica między złożeniami Framework i Extensions
- 9. Jaka jest różnica między = i: = w mysql?
- 10. Jaka jest różnica między! = I =! w Javie?
- 11. Jaka jest różnica między 'i "w PHP
- 12. Jaka jest różnica między! i !! w yaml?
- 13. jaka jest różnica między @ i @@ w module?
- 14. Jaka jest różnica między * i. * W Matlab?
- 15. Jaka jest różnica między | i || w MATLAB?
- 16. Jaka jest różnica między * i * | * w CSS?
- 17. Jaka jest różnica między asersem i static_assert?
- 18. Jaka jest różnica między PropertyChangeListener i VetoableChangeListener?
- 19. Jaka jest różnica między Ja i Ja?
- 20. Jaka jest różnica między ATL i WTL?
- 21. Jaka jest różnica między FontMetrics.stringWidth() i FontMetrics.getStringBounds()?
- 22. Jaka jest różnica między "CompletionStage" i "CompletableFuture"?
- 23. Jaka jest różnica między CellClick i CellMouseClick?
- 24. Jaka jest różnica między ObjectResult i JsonResult
- 25. Jaka jest różnica między ssize_t i ptrdiff_t?
- 26. Jaka jest różnica między fn i fn *?
- 27. Jaka jest różnica między getMeasuredHeight i getHeight
- 28. Jaka jest różnica między beginTrackingWithTouch i touchBegan?
- 29. Jaka jest różnica między init() i window.init()?
- 30. Jaka jest różnica między SQLite i SQL