Foros del Web » Programando para Internet » ASPX (.net) »

Actualiar control, segun propiedad de la ventana

Estas en el tema de Actualiar control, segun propiedad de la ventana en el foro de ASPX (.net) en Foros del Web. Buenas tardes foreros !! Tengo la siguiente pregunta para haceros: Tengo un ventana, que tiene una propiedad del tipo UserMsn. Esta clase UserMsn, tiene una ...
  #1 (permalink)  
Antiguo 27/08/2009, 06:44
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Actualiar control, segun propiedad de la ventana

Buenas tardes foreros !!

Tengo la siguiente pregunta para haceros:

Tengo un ventana, que tiene una propiedad del tipo UserMsn.

Esta clase UserMsn, tiene una propiedad que es StatusOnLine, de tipo Boolean.

Todas estas propiedades de la clase UserMsn, implementan la interfaz INotifyPropertyChanged. Y funciona bien, por que para otros controles, por ejemplo un ListBox, se reflejan las actualizaciones.

Sin embargo... para un TextBox, debo estar haciendo algo mal. Estoy intentando hacer que se desahbilite, cuando la propiedad del UserMsn.StatusOnLine sea false.

Para ello hago esto, pero... no me funciona, no se deshabilita:

Código:
//TIENE MÁS ATRIBUTOS ESTE TEXTBOX, PERO SOLO PONGO LO QUE CREO ES IMPORTANTE
<TextBox IsEnabled="{Binding UserConversation.StatusOnLine}"></TextBox>
En el code-behind de la ventana tengo lo siguiente:
Código:
        public static DependencyProperty SourceProperty = DependencyProperty.Register("UserConversation", typeof(UserMsn), typeof(FrmConversation));
        public UserMsn UserConversation { get; set; }
En fin... espero me puedan ayudar.

Saludos y muchas gracias siempre por la ayuda ofrecida aqui.
__________________
Charlie.
  #2 (permalink)  
Antiguo 27/08/2009, 07:54
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Actualiar control, segun propiedad de la ventana

ok lo q me preocupa es q el objeto no este instanciado y que al no tener valor no este haciendo el binding porq la asignacion en el xaml se ve bien.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #3 (permalink)  
Antiguo 27/08/2009, 10:17
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Respuesta: Actualiar control, segun propiedad de la ventana

Bueno Peterpay, primero, muchas gracias por contestar a mis dudas sobre estos temas, me ayudas a progresar más rapido. Thanks.

Y segundo, la propiedad si tiene valor. De hecho, quite el constructor por defecto de la ventana y solo he dejado este:

Código:
public FrmConversation(UserMsn objUser)
{
       InitializeComponent();
       this.UserConversation = objUser;
}

También probé a cambiar la forma de trabajar la propiedad y probé con esto:
Código:
public UserMsn UserConversation 
{ 
      get { return (UserMsn)SourceProperty; }
      set { SourceProperty = value; }
}
Bueno, espero dar un poco más de luz... no obstante voy a seguir revisando el código, no vaya ser que este haciendo cualquier otra cosa mal.

Un abrazo !!!
__________________
Charlie.
  #4 (permalink)  
Antiguo 28/08/2009, 00:57
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Respuesta: Actualiar control, segun propiedad de la ventana

Bueno... he estado revisando el código y comprobando el valor de la propiedad y eso está bien. Cuando pongo la propiedad a False, sigue sin actualizarse el TextBox.

Intenté hacerlo por XAML de la siguiente manera:
Código:
        <TextBox x:Name="txtSend" VerticalAlignment="Bottom" Height="24" Text="texto para enviar" TextWrapping="Wrap" Margin="8,0,8,8" BorderThickness="0,0,0,0" KeyDown="txtSend_KeyDown">
            <TextBox.Style>
                <Style>
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding UserConversation.StatusOnLine}" Value="true">
                            <Setter Property="TextBoxIsEnabled" Value="True" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </TextBox.Style>
        </TextBox>
Pero tampoco me ha funcionado...
__________________
Charlie.

Última edición por chcma; 28/08/2009 a las 01:42
  #5 (permalink)  
Antiguo 31/08/2009, 06:02
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Respuesta: Actualiar control, segun propiedad de la ventana

Bueno... se uqe no es la mejor opción, pero, como también tenia que poner un texto, según cambiase la propiedad... al final, opté por hacer esto:

Código:
        private void UserConversation_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {

            string statusUser = this.UserConversation.StatusOnLine ? "Conectado" : "Desconectado";

            this.txtReceived.Dispatcher.Invoke((Action)delegate { this.txtReceived.Text += string.Format("Usuario {0} está {1}.", this.UserConversation.Email, statusUser) + "\r\n"; });
            this.txtSend.Dispatcher.Invoke((Action)delegate { this.txtSend.IsEnabled = this.UserConversation.StatusOnLine; });
        }
Ya lo sé !!! Es muy triste que no lo haya conseguido através de WPF, pero bueno... lo segundo más optimo que se me ocurría era esto... (Espero opniones y sugerencias, jejeje)

Salu2
__________________
Charlie.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:14.