首页 > 解决方案 > Xamarin,从另一个类中获取滑块的值

问题描述

我在获取绑定到 Temp_Mash_value 的滑块值时遇到了一些问题。

<Slider x:Name="Temp_Mash" Margin="20,5,20,0" MaximumTrackColor="DarkGray" MinimumTrackColor="Gray" ThumbColor="Black" Minimum="0" Maximum="100" Value="{Binding Temp_Mash_value}"

当我使用 Mash 类在 ContentPage 上时,我可以毫无问题地将值更改为 45 并获得实际值,但是当我更改第一个类的页面并尝试获取 Temp_Mash_value 的值时,我得到的只是默认值值例如:Temp_Mash_value = 25;不是实际设置的。我可以添加 Mash mash = new Mash(); 在开始时调用,然后更改滑块值

//In one of my class I have:

Mash mash = new Mash();
//... some code...
//method with:
//I'm trying to get value of slider:
double test = mash.Temp_Mash_value;



//The second class:

 public partial class Mash : ContentPage
    {
        private double temp_Mash_value;
        public double Temp_Mash_value
        {
            get
            {
                return temp_Mash_value;

            }
            set
            {
                temp_Mash_value = value;
                OnPropertyChanged(nameof(Temp_Mash_value));
            }


        }

        public Mash()
        {

            InitializeComponent();
            BindingContext = this; 
            Temp_Mash_value = 25;

        }
    }

标签: c#xamarin

解决方案


执行此操作的最简单方法是将 Mash 设置为全局静态。

public partial class Mash : ContentPage
{
    private double temp_Mash_value;
    public double Temp_Mash_value
    public static Mash Instance;
    {
        get
        {
            return temp_Mash_value;

        }
        set
        {
            temp_Mash_value = value;
            OnPropertyChanged(nameof(Temp_Mash_value));
        }


    }

    public Mash()
    {

        InitializeComponent();
        BindingContext = this; 
        Temp_Mash_value = 25;
        Instance = this;
    }
}

然后在其他类中,您可以获得如下值:

double test = Mash.Instance.Temp_Mash_value;

推荐阅读