Saltar al contenido principal

 none
Combobox y Textbox RRS feed

  • Pregunta

  • Hay algún evento como "selectionchangecommitted" en WPF?
    tengo 6 text y un combobox con itemsource a una clase con ID, Nombre y 6 propiedades numéricas, al calcular los 6 textbox me va dar un valor que es igual al ID y el combo tiene que mostrar el nombre , en cambio al selecionar el nombre dentro del combox este va rellenar los 6 textbox con las propiedades numéricas, el problema al bindear es que si cambio uno también se refleja en el otro control, por eso quería saber si hay un evento como ese.. o alguna manera de implementar esto.
    viernes, 15 de noviembre de 2019 2:02

Todas las respuestas

  • Lo arregle usando una variable en las propiedades, no se si es la mejor forma pero funciono así.
    namespace TesteoWPF
    {
        public class TesteoVM : INotifyPropertyChanged
        {
            private ObservableCollection<TesteoM> _test = new ObservableCollection<TesteoM>()
            {
                new TesteoM(){ Name = "A", Val1 = 1, Val2 = 1, ID = 0},
                new TesteoM(){ Name = "B", Val1 = 2, Val2 = 2, ID = 1}
            };
    
            public TesteoVM()
            {
                _selectedTest = new TesteoM();
            }
    
            public ObservableCollection<TesteoM> Test => _test;
    
            private TesteoM _selectedTest;
    
            private bool _checking1;
    
            public TesteoM SelectedTest
            {
                get => _selectedTest;
                set
                {   
                    if(_selectedTest!= value)
                    {
                        if (!_checking1)
                        {
                            _selectedTest = value;
                            MyVal1 = SelectedTest.Val1;
                        }
                    }
                    _selectedTest = value;
                    OnPropertyChanged(nameof(SelectedTest));               
                }
            }
    
            private int _selectedIndex;
            public int SelectedIndex
            {
                get => _selectedIndex;
                set
                {
                    _selectedIndex = value;
                    OnPropertyChanged(nameof(SelectedIndex));
                }
            }
    
            private int myVal1;
    
            public int MyVal1
            {
                get => myVal1;
                set
                {
                    if(myVal1 != value)
                    {
                        _checking1 = true;
                        myVal1 = value;
                        if(_checking1 == true)
                        {
                            SelectedIndex = myVal1;
                            _checking1 = false;
                        }
                    }
                    myVal1 = value;
                    OnPropertyChanged(nameof(MyVal1));
                }
            }
            private int myVal2;
    
            public int MyVal2
            {
                get => myVal2;
                set
                {               
                    myVal2 = value;
                    OnPropertyChanged(nameof(MyVal2));               
                }
            }
    
            public event PropertyChangedEventHandler PropertyChanged;
    
            protected virtual void OnPropertyChanged(string propertyName) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }


    • Editado xJulianx martes, 19 de noviembre de 2019 11:38
    martes, 19 de noviembre de 2019 11:35