none
cambiar background textbox cuando este deshabilitado RRS feed

  • Pregunta

  • Hola, tengo un control de tipo textbox con su propiedad BackGround en rojo

    pero cuando lo pondo deshabilitado (IdEnabled = false)

    el background se pinta en blanco, quisiera controlar ese color

    es que no lo quiero en blanco

    como lo hago, muchas gracias!!!

    domingo, 6 de noviembre de 2011 3:23

Todas las respuestas

  • Hola Omar

    Esto servirá para tu propósito:

    <Window.Resources>
            <SolidColorBrush x:Key="DisabledForegroundBrush" Color="White" />
            <SolidColorBrush x:Key="DisabledBackgroundBrush" Color="Black" />
            <Style x:Key="Enabled" TargetType="{x:Type TextBox}">
                <Setter Property="Background" Value="White"/>
                <Setter Property="BorderBrush" Value="Black"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="TextBox">
                            <Border Name="Bd" BorderThickness="{TemplateBinding BorderThickness}" 
                                                 BorderBrush="{TemplateBinding BorderBrush}" 
                                                 Background="{TemplateBinding Background}" 
                                                 SnapsToDevicePixels="true">
                                <ScrollViewer Name="PART_ContentHost" Background="{TemplateBinding Background}" 
                                              SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
                            </Border>
                            <ControlTemplate.Triggers>
                                <Trigger Property="IsEnabled" Value="False">
                                    <Setter Value="{StaticResource DisabledBackgroundBrush}" Property="Background" />
                                    <Setter Value="{StaticResource DisabledForegroundBrush}" Property="Foreground" />
                                    <!--<Setter TargetName="PART_ContentHost" Property="Background" Value="Blue"/>-->
                                </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </Window.Resources>
    

    Nota:

    Si deseas usar este Style, No hagas esto:

    <TextBox Name="Texto" Text="Antonio Lobo" Style="{StaticResource Enabled}" Foreground="Blue" Background="Red"/>
    

    Porque tal como te mencioné en ésta pregunta, la prioridad sería lo que has definido en esta última línea y no se aplicaría el Style.

    Saludos


    Antonio Lobo
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi blog
    • Propuesto como respuesta Antonio Lobo viernes, 11 de noviembre de 2011 2:35
    domingo, 6 de noviembre de 2011 4:06
  • Que tal Omar.

    Otra opcion que tienes es utilizar un Convertidor, donde tengas algo asi como:

    <TextBox Name="Texto" Text="Antonio Lobo" IsEnable="{Binding EnabledBool}" Foreground="Blue" Background="{Binding EnableBool, Converter={StaticResource MiConvertidor}}"/>

    y en alguna parte tendrias que tener declarado el convertidor.

    namespace MiProyecto.Converters
    {
        public class VisibilityConverter : IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                string resultado = string.Empty;
                bool visible = (bool)value;
    
                if (visible)
                {
                    resultado = "Red";
                }
                else
                {
                    resultado = "Blue";
                }
    
                return resultado;
            }
    
        }
    }
    
    algo asi como eso.


    Recibe un saludo de mi parte. Atentamente Cisco Pérez. =) ---------------------------------------------------- Si esto responde tu pregunta, favor de marcala como respondida. =)
    • Propuesto como respuesta Antonio Lobo viernes, 11 de noviembre de 2011 2:35
    lunes, 7 de noviembre de 2011 22:33