我有一个
<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项目上? (我需要通过后面的代码来执行此操作吗?)
答案 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:
<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
的变化而变化。
希望这对您有所帮助,并祝您编程愉快!