微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

“ Maximum”属性的绑定值不适用于Slider Xamarin

如何解决“ Maximum”属性的绑定值不适用于Slider Xamarin

我试图在“滑块最大值”上使用viewmodel属性,但是当我使用“绑定”时,滑块始终将当前值显示为0。

使用固定值,它可以工作:

<Slider Minimum="0" Maximum="16" Value="{Binding SliderStep,Mode=OneWay}" HorizontalOptions="CenterandExpand" />

enter image description here

但是最大值是可变的,因此当我尝试将其绑定到viewmodel时,出现了一些问题:

<Slider Minimum="0" Maximum="{Binding SliderMax}" Value="{Binding SliderStep,Mode=OneWay}"  HorizontalOptions="CenterandExpand" />

enter image description here

viewmodel片段代码

double sliderStep;
    public double SliderStep
    {
        get
        {
            return sliderStep;
        }
        set { sliderStep = value;
            OnPropertyChanged("SliderStep");
        }
    }

    double sliderMax;
    public double SliderMax
    {
        get
        {
            return sliderMax;
        }
        set {
            sliderMax = value;
            OnPropertyChanged();
        }
    } 
public SectionGraphicviewmodel(INavigation navigation)
        {
            this.Navigation = navigation;
            sectionRep = new SectionRepository();
            this.Sections = sectionRep.GetSections().ToList();
            Items = new List<SectionGraphicModel>();
            foreach (var item in this.Sections)
            {
                var SectionView = new SectionModel(item);
                Items.Add(new SectionGraphicModel(){ Source = SectionView.CachedImageUsed.source,Desc = SectionView.Desc,Id = SectionView.Id });
            }
            SliderMax = items.Count();
            if (sectionId.HasValue)
            {
                SliderStep = items.Findindex(x => x.Id == sectionId);
            }
            else
            {
                SliderStep = 0;
            }
        }

此示例中的最大值为16,我测试了不同的值,结果是相同的。 我仅在Android模拟器上进行了测试。我不知道它是否会在iOS上发生。

PS:为避免引起误解,我需要使Maximum属性从VM绑定一个值,然后OneWay将从UI禁用控件,仅显示VM的值。

解决方法

您应该以确保“最大值”始终大于“最小值”的顺序设置属性,在xaml中“最大值”应设置在“最小值”之前:

In [19]: eigen_values = np.array([1,0.5,0.1])

In [20]: scale = 1.0

In [21]: np.diag(np.exp(-scale*eigen_values))
Out[21]: 
array([[0.36787944,0.,0.        ],[0.,0.60653066,0.90483742]])

In [22]: np.exp(-scale*np.diag(eigen_values))
Out[22]: 
array([[0.36787944,1.,1.        ],[1.,0.90483742]])

如果要禁用UI,请设置:

import pandas as pd
import matplotlib.pyplot as plt

#cleaning the csv file
fh=pd.read_csv('Documents/ads/2019 T1_12.csv',skiprows=[0,1,3,9,15,21,27,30,31,32,33,34,35])
fh=fh.drop('Total',axis=1)
fh=fh.drop('Others',axis=1)

#plotting
plt.plot(fh['Year'],fh['Germany'])
plt.plot(fh['Year'],fh['USA'])
plt.ylabel('Number of Emigrants',fontsize=17)
plt.xlabel('Years',fontsize=17)


fh.index
fh.head()

引用:slider#precautions

,

我没有正确阅读问题。问题只是绑定模式

Value="{Binding SliderStep,Mode=TwoWay}

这应该做到。

PS :每当您上传示例存储库时,都会从所有共享项目和目标项目中删除所有bin / obj文件。您的项目小于2 MB,但是由于bin / obj而我下载的zip为50+ MB。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。