【问题标题】:Syncfusion buttons how to trigger visual states on view model -Xamarin FormsSyncfusion按钮如何在视图模型上触发视觉状态-Xamarin Forms
【发布时间】:2020-02-24 15:04:47
【问题描述】:

我想触发此按钮的每个单独状态,我添加了一个命令属性,但这对两种状态都有反应。 我如何识别每个单独的状态并根据该 EX - OnChecked - 执行此操作和 OnUncheck - 执行操作执行操作? 见下文

XAML

<syncfusion:SfButton x:Name="iconButton" 
                                     Command="{Binding Source={x:Reference list}, Path=BindingContext.AddFavoritesCommand}"
                                     CommandParameter="{Binding .}" >
                        <syncfusion:SfButton.FontFamily>
                            <OnPlatform x:TypeArguments="x:String">
                                <On Platform="iOS" Value="Segoe MDL2 Assets" />
                                <On Platform="Android" Value="button_Segoe MDL2 Assets.ttf#Segoe MDL2 Assets" />

                            </OnPlatform>
                        </syncfusion:SfButton.FontFamily>
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup x:Name="CommonStates">
                                <VisualState x:Name="Checked" >
                                    <VisualState.Setters>
                                        <Setter  Property="TextColor" Value="Red"/>
                                    </VisualState.Setters>
                                </VisualState>
                                <VisualState x:Name="Unchecked">
                                    <VisualState.Setters>
                                        <Setter Property="TextColor" Value="White" />
                                    </VisualState.Setters>
                                </VisualState>
                            </VisualStateGroup>
                        </VisualStateManager.VisualStateGroups>
                    </syncfusion:SfButton>

视图模型

public ICommand AddFavoritesCommand { private set; get; }
 AddFavoritesCommand = new Command(FavoritesCommand);
public async void FavoritesCommand(object room)
        {
            await Application.Current.MainPage.DisplayAlert("Favorito", "", "OK");
           *This gets trigger on each tapped so I need to identify what color it was*

        }

【问题讨论】:

    标签: button mvvm xamarin.forms triggers syncfusion


    【解决方案1】:

    如果我没记错的话,你总是可以做类似下面的事情,然后直接将你的命令移动到可视状态管理器

    <Button
                x:Name="iconButton"
             <Button.FontFamily>
                <OnPlatform x:TypeArguments="x:String">
                    <On Platform="iOS" Value="Segoe MDL2 Assets" />
                    <On Platform="Android" Value="button_Segoe MDL2 Assets.ttf#Segoe MDL2 Assets" />
                </OnPlatform>
                </Button.FontFamily>
                <VisualStateManager.VisualStateGroups>
                    <VisualStateGroup x:Name="CommonStates">
                        <VisualState x:Name="Checked">
                            <VisualState.Setters>
                                <Setter Property="TextColor" Value="Red" />
                                <Setter Property="Command" Value="{Binding Source={x:Reference list}, Path=BindingContext.AddFavoritesCommand}" />
                                <Setter Property="CommandParameter" Value="{Binding .}" />
                            </VisualState.Setters>
                        </VisualState>
                        <VisualState x:Name="Unchecked">
                            <VisualState.Setters>
                                <Setter Property="TextColor" Value="White" />
                            </VisualState.Setters>
                        </VisualState>
                    </VisualStateGroup>
                </VisualStateManager.VisualStateGroups>
            </Button>
    

    我使用的是普通按钮,但您可以随时根据自己的方便更换它!

    【讨论】:

      猜你喜欢
      • 2014-09-21
      • 2022-01-22
      • 1970-01-01
      • 2022-10-22
      • 1970-01-01
      • 1970-01-01
      • 2017-03-20
      • 2012-05-12
      • 1970-01-01
      相关资源
      最近更新 更多