xamarin表单-更改所有轮播内容页面上的按钮文本

时间:2018-08-30 15:12:39

标签: c# android ios xamarin.forms

执行以下操作的“最佳”(或更好)方法是什么?

在轮播页面(例如6个内容页面)中,我单击一个按钮,部分操作会更改该按钮上的文本,但对于所有其他内容页面也必须更改。

我目前在轮播页面OnCurrentPageChanged()上发生这种情况,在这里我调用一个函数并传递“ this”。 helpers.ChangeAll(this);

public void ChangeAll(CarouselSwipePage page)
        {
            foreach (SwipePageContent v in page.Children)
            {
                Button b = v.Content.FindByName<Button>("pause");
                if (GlobalSettings.Settings.Default.CarouselCountEnabled) //this is set elsewhere and is used to determine whether the carousel is changing automatically, if it is then set the text to pause
                {
                    b.Text = FontAwesomeFont.PauseCircleO;
                }
                else
                {
                    b.Text = FontAwesomeFont.PlayCircleO;
                }
            }
        }

这在android上可以正常使用,但在ios上,当用户单击按钮后滑动到下一个内容页面时,由于该函数被称为OnCurrentPageChanged(),因此按钮文本在更改为新值之前暂时是旧值。

除此之外,我确信必须有更好的方法来做到这一点,它看起来很垃圾。

1 个答案:

答案 0 :(得分:1)

如何为按钮创建样式,然后仅更改样式的文本值?

因此,使用绑定属性或动态资源,当您更改值时,它将更改应用程序中使用此样式的所有按钮。我认为这种方法比循环好得多,也更简单。