如何在屏幕上保留Xamarin标签以及绑定到Carosell项的数据

时间:2020-03-05 08:25:34

标签: xamarin xamarin.forms data-binding

我有一个

<CarouselView ItemsSource="{x:Static vm:MainPageViewModel.MyItems}">
            <CarouselView.ItemTemplate>
                <DataTemplate>
                    <StackLayout>
                        <Label Text="{Binding ID}"/>
                        <Label Text="{Binding Progress}"/>
...

我希望<Label Text="{Binding Progress}"/>不在屏幕上滚动,而是保持固定(在顶部)并随着用户在CarouselView项目中滑动而更新。如果我将标签移到CarouselView之外,则不会绑定数据。

如何将标签固定在屏幕上,但绑定到当前的CarouselView项目上? (我需要通过后面的代码来执行此操作吗?)

1 个答案:

答案 0 :(得分:1)

您可以通过将Widget _loginButton() { return Row( children: <Widget>[ RaisedButton( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(25.00), side: BorderSide( color: Color(0xffd67219), width: 1, ), ), color: Color(0xffffffff), padding: EdgeInsets.symmetric( vertical: 10, horizontal: MediaQuery.of(context).size.width / 3.5, ), child: Text( 'SUBMIT', style: TextStyle( fontSize: 20, fontWeight: FontWeight.w400, color: Color(0xffD67219), ), ), onPressed: () {}, ) ], mainAxisSize: MainAxisSize.min, ); } 的text属性绑定到Label中的属性来轻松实现此目的,该属性还将绑定到ViewModel的{​​{1}}属性。

您能尝试这样的事情吗?

CurrentItem

,然后在您的CarouselView中创建一个与MyItems列表项相同类型的新可绑定属性。

我已经用这种行为的示例更新了我的GitHub存储库:

您可以找到GitHub存储库here

和特定视图here

这是正在运行的演示的GIF:

enter image description here

<Label Text="{x:Static vm:MainPageViewModel.MyCurrentItem.Progress}"/> <CarouselView CurrentItem="{x:Static vm:MainPageViewModel.MyCurrentItem}" ItemsSource="{x:Static vm:MainPageViewModel.MyItems}" ... other code > ... other code </CarouselView> ViewModel上方,当您滑动并更改所选项目时,标签的值会根据Label的变化而变化。

希望这对您有所帮助,并祝您编程愉快!