首页 > 解决方案 > 更改列表视图中的所有 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);
            }
        }

标签: xamarin.forms

解决方案


推荐阅读