none
Combobox y Textbox RRS feed

  • Question

  • 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.
    vendredi 15 novembre 2019 02:02

Toutes les réponses

  • 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));
        }
    }


    • Modifié xJulianx mardi 19 novembre 2019 11:38
    mardi 19 novembre 2019 11:35