Как передавать значение из переменной C# в Slider Maximum (XAML) хоть сколько раз?

Рейтинг: 0Ответов: 2Опубликовано: 30.05.2023

Умоляю, прошу помогите кто знает. С этим 2 недели мучаюсь. Нужно из переменной при нажатии на кнопку перенести значение в Slider Maximum и сделать так, чтобы она могла изменяться. То есть: первый раз нажал на кнопку - у слайдера максимальное значение отправилось 10, второй раз нажал на кнопку - у slider maximum значение поменялось на другое и так хоть сколько раз. У меня получилось(это совсем было не сложно, я уверен с этим каждый начинающий даже справиться) сделать передачу из кнопки, но я не понимаю, что нужно сделать чтобы как-бы "забиндивать" данную переменную в slider maximum.

 
        class Perv
        {


            public static double d;//изменяю её
            public static void Favorite_Clicked(object sender, EventArgs args)
            {
                VtorClass.Max = d;//я знаю, что можно изменять напрямую(не прибегая к переменной d, её написал просто чтобы было наглядно понятно где изменяется данные,
                //может для примера написать цикл for с этой переменной, но сути не меняет: данная переменная изменяется и при нажатии на кнопку должна меняться переменная обозначающая максимальное возможное число slider maximum

            }
            
        }
        public class VtorClass
        {
            public static double Max;
        }
        public class Tri
        {
            //это класс, где (если должна) содержатся логика присваивания slider maximum значение
        }

Также пробовал вариант: Maximum="{x:Static local:VtorClass.Max}", но у него есть проблема - он работает, но работает только один раз при запуске, дальше если будешь менять ту переменную - она меняется только в классе, а свойство Maximum к ней не обращается(не реагирует).

Вы гораздо лучше разбираетесь во всём этом чем я, могли бы Вы подсказать:

Я попробовал, то что Вы рекомендовали, и правда работает, значения передаёт, но передаёт только одно, если писать через -

        public void OnPropertyChanged(double x)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(x));
        }
        public event PropertyChangedEventHandler PropertyChanged;
        private static double d = 3;
        public  double Mx
        {
            get => d;
            set
            {
                OnPropertyChanged(nameof(Mx));
            }
        }
        public void Dada(object sender, System.EventArgs e) //кнопка
        {
            d += 1;
        }

, то он выдаёт ошибку CS1503 Аргумент 1: не удается преобразовать из “double” в “string”. попробовал через PropertyChangedEventHandler, но в данном случае - CS0149 Требуется имя метода.

Я считаю, что сделать данную задумку должно быть легко, так как такая вещь довольна часто используется(привязка double из C# в переменную Xaml’а, но как её сделать не пойму).

Не могли бы Вы мне помочь пожалуйста? Вы гораздо лучше в программировании разбираетесь, чем я, очевидно сделали не один и не 10 проектов.

Ответы

▲ 0

Сделал, всё как и ожидалось гораздо легче

 public double Mx = 1;
        public void Dada(object sender, EventArgs e) //кнопка, но не суть, можно сделать метод и через него присваивать значения! Ура!
        {
            
            Mx += 1;
            "x:Name вашего Slider".Maximum = Mx;
        }


▲ 0

Теперь другая проблема: в главной странице(от куда запускаются другие страницы)(у меня эта страница имеет тип Shell) так сделать не выходит, дело даже не в INotifyPropertyChanged или Binding, а просто в том, что x:Name который присвоен Slider’у не забивается генерацией в класс NamePage.xaml.g.cs. Что интересно: во всех остальных классах(страницах) всё автоматически вбивается для вызова из кода c# этой же страницы, а в главную страницу - Shell - нет.

Пробовал в ручную вбить x:Name - получилось, но через раз компиляции и сборки проекта программа сама удаляет эти данные, а если они остались, то ссылки, которые используешь в c# - “x:Name вашего Slider”.Maximum = Mx; - вот именно эта “x:Name вашего Slider” является null.

И что делать с этим null - знают только хорошие программисты.

Также пробовал перенести Shell по другим папкам или в другой класс(как экземпляр Shell и как ссылку на созданный в основном классе) - ничего: либо другие ошибки, либо просто создаётся, но без slider и без цвета(то есть пустой, без элементов), либо ещё что-нибудь, что может только быть.

Если кто-то это прочитает и знает ответ или возможность, или способ, хоть блин что-то, что может решить такую задачку - умоляю помогите, я блин по 16 часов сижу за этой … почти каждый день, хоть тресни - не понимаю.

(Извините за нытьё).