xamarin.forms - 更改列表视图中的所有 xamarin 表单按钮背景
问题描述
我有 ListView 里面有按钮。单击按钮时,我需要一些方法来更改所有其他按钮的背景颜色,除了单击的按钮。最初,我的列表视图中的所有按钮都有白色背景,当单击按钮时,我检查背景颜色是否为白色,然后更改为灰色,并且需要将所有其他按钮的背景颜色更改为白色。 这是代码:
<control:ListViewNestedScroll
x:Name="ClassLevelListView"
HasUnevenRows="True"
RowHeight="30"
SeparatorVisibility="None"
IsPullToRefreshEnabled="True"
IsRefreshing="{Binding IsRunning, Mode=TwoWay}"
RefreshCommand="{Binding LoadClassLevelsCommand}"
ItemsSource="{Binding ClassLevels}">
<ListView.ItemTemplate>
<DataTemplate>
<control:CustomViewCell SelectedBackgroundColor="{StaticResource GreyColor}">
<StackLayout Margin="0,0,0,10">
<control:CustomButton
Text="{Binding KeyName, Converter={StaticResource I18N}}"
CornerRadius="20"
BorderColor="Black"
BorderWidth="2"
TextColor="Black"
BackgroundColor="White"
CommandParameter="{Binding .}"
Clicked="Button_OnClicked" />
</StackLayout>
</control:CustomViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</control:ListViewNestedScroll>
private void Button_OnClicked(object sender, EventArgs e)
{
var classLevelButton = (Button)sender;
var classLevel = classLevelButton.CommandParameter as ClassLevelModel;
if (classLevelButton.BackgroundColor == Color.White)
{
classLevelButton.BackgroundColor = (Color)Application.Current.Resources["GreyColor"];
((RegisterTeacherClassLevelViewModel)BindingContext).AddTeacherClassLevel(classLevel);
}
else
{
classLevelButton.BackgroundColor = Color.White;
((RegisterTeacherClassLevelViewModel)BindingContext).RemoveTeacherClassLevel(classLevel);
}
}
解决方案
推荐阅读
- postgresql - 如何在 ASP.NET Core 5 中使用 FromSqlRaw 删除记录?
- node.js - 由于 CORS 错误,React 不会调用后端(节点)
- android - 带有条件的活动回栈
- graphics - 我们如何在 Vulkan 中禁用帧限制/垂直同步
- angular - 如何为 Swagger UI 提供标题?
- hibernate - 具有两个实体之间不同的复合键的休眠连接列
- android - 如何将 android 导航 backstack 弹出到某个片段?
- java - 循环遍历 Arraylist 并显示满足 Java 条件的对象
- php - 在 TYPO3 v10 上从我的控制器保存系统类别
- google-sites - 我可以在谷歌网站内构建自己的自定义 JavaScript 应用程序吗?