【发布时间】:2019-07-22 09:35:37
【问题描述】:
我正在尝试使用 XAML 和 Xamarin 创建一个列表视图,其中包含带有用户信息的标签。有人应该能够从列表中选择多个用户。如果他们愿意,可以使用顶部的“全选”按钮。
未选中的人应该有一个带有“显示兴趣”文本的灰色按钮。选定的人应该有一个带有“删除兴趣”文本的绿色按钮。
我通过创建一个包含我需要的信息以及以下信息的类来做到这一点:
public bool IsSelected { get; set; }
public Color ButtonColor { get { return IsSelected ? Color.LightGreen : Color.LightGray; } }
public string Status { get { return IsSelected ? "Remove\nInterest" : "Show\nInterest"; } }
在 xaml 中,我将按钮的属性绑定到颜色和状态:
<ListView x:Name="ItemsListView"
ItemsSource="{Binding Results}"
VerticalOptions="FillAndExpand"
HasUnevenRows="True"
IsPullToRefreshEnabled="False">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid>
<Button
Text="{Binding Status}"
BackgroundColor="{Binding ButtonColor}"
Clicked="ChangeInterest"
Grid.Row="0"
Grid.RowSpan="6"
Grid.Column="10"
Grid.ColumnSpan="5"
/>
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
ChangedInterest 只是找到合适的项目并切换“IsSelected”。既然属性绑定了变量,变量绑定了IsSelected,那么按钮不应该自动改变吗?
如果,在 ChangedInterest 函数中,我写
(sender as Button).Text = Results[i].Status;
和颜色的适当行,它会改变。
“全选”按钮只是滚动浏览列表中的所有项目,并将每个项目的 IsSelected 设置为 true。期望的结果是所有按钮随后根据第一个块的规则更改颜色和文本。
有没有办法让属性随着绑定的变化而自动变化?
【问题讨论】:
标签: c# xaml xamarin.forms