c# - wpf estilos
BasedOn="{StaticResource{x: Type TextBox}}" en Code Behind for Style (3)
¿Cómo se puede configurar lo siguiente en el código detrás?
<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
Estoy usando un tema combinado en App.xaml. Funciona muy bien para todos los controles, pero cuando defino un estilo para algo, por ejemplo, TextBox
, el estilo del tema no se selecciona a menos que use BasedOn
como antes, en su lugar, obtiene el estilo predeterminado de TextBox
.
Ahora estoy creando un DataGridTextColumn
en el código detrás y no puedo hacer que la parte BasedOn
funcione para EditingElementStyle
Style editingStyle = new Style(typeof(TextBox));
editingStyle.BasedOn = ...?;
¿Alguna sugerencia? Además, ¿hay alguna forma de obtener el estilo del tema en lugar del estilo predeterminado aplicado sin usar BasedOn?
Gracias
Esto debería funcionar:
Style baseStyle = new Style(typeof(TextBox));
Style editingStyle = new Style(typeof(TextBox));
editingStyle.BasedOn = baseStyle;
También puedes hacerlo en el constructor:
Style editingStyle = new Style(typeof(TextBox), baseStyle);
Me gusta la respuesta de Pavlo Glazkov , pero no compila.
FindResource es miembro (no estático) de FrameworkElement . Es necesario identificar el contexto de la solicitud de búsqueda.
Así que recomiendo esto:
style.BasedOn = (Style)frameworkElement.FindResource(typeof(TextBox));
Prueba esto:
editingStyle.BasedOn = (Style) FindResource(typeof (TextBox))
Y no sé de qué manera puedes hacer que aplique el estilo del tema sin especificar BasedOn
. Si existe tal manera, me gustaría saberlo también ...