none
Problema con INotifyPropertyChanged RRS feed

  • Pregunta

  • Buenos días,

    Resulta que tengo un problema y es el siguiente, necesito disparar el evento PropertyChanged cuando se modifique la propiedad de una clase y no me está funcionando. Resulta que si le asigno el DataContext en el XAML no me funciona, pero si en el constructor del MainPage le asigno la propiedad DataContext = Objeto del tipo de mi clase si funciona.

    using System;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Ink;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    using ReglasNegocio.ServicioDocente;
    using System.ComponentModel;
    
    namespace SUVE.Desktop.ReglasNegocio
    {
        public class Class1 : INotifyPropertyChanged
        {
           string _resultado;       
    
            public string Resultado
            {
                get
                {
                    return _resultado;
                }
                set
                {
                    _resultado = value;
                    NotifyPropertyChanged("Resultado");
                }
            }
    
            public Class1()
            {
                //miMetodo();
            }
    
            public void miMetodo()
            {
                _resultado="Hola Cambio";            
            }
    
      
    
    
            public void NotifyPropertyChanged(string propertyName)
            {
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
                }
            }  
    
            public event PropertyChangedEventHandler PropertyChanged;
        }
    
     
    }


    <UserControl x:Class="SAGA_Escritorio.MainPage"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
                 xmlns:Dato="clr-namespace:SUVE.Desktop.ReglasNegocio;assembly=ReglasNegocio"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
                 d:DesignHeight="300"
                 d:DesignWidth="400"
                 mc:Ignorable="d">
        <UserControl.Resources>
            <Dato:Class1 x:Key="Contexto" />
        </UserControl.Resources>
        <Grid x:Name="LayoutRoot"
              Background="White"
              >
            <Button Name="button1"
                    Width="75"
                    Height="23"
                    Margin="100,136,0,0"
                    HorizontalAlignment="Left"
                    VerticalAlignment="Top"
                    Click="button1_Click"
                    Content="Button" />
            <TextBlock Name="textBlock1"
                       Width="91"
                       Height="23"
                       Margin="102,99,0,0"
                       HorizontalAlignment="Left"
                       VerticalAlignment="Top"
                       Text="{Binding Path=Resultado,
                                      Mode=TwoWay}" />
    
        </Grid>
    </UserControl>
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    
    using SUVE.Desktop.ReglasNegocio;
    
    namespace SAGA_Escritorio
    {
        public partial class MainPage : UserControl
        {
            Class1 miClass = new Class1();  
    
            public MainPage()
            {
                InitializeComponent();
                DataContext = miClass;
            }
    
            private void button1_Click(object sender, RoutedEventArgs e)
            {
                         
                miClass.miMetodo();
    
                //textBlock1.Text = miClass.Resultado;
                
            }
    
          
        }
    }
    

    He intentado asignar el datacontext por el XAML de todas las formas y no he podido.

    Espero que alguien me pueda orientar.

    Gracias,


    La tecnologia te envuelve

    martes, 14 de febrero de 2012 13:11

Todas las respuestas