Кнопки Syncfusion, как вызвать визуальные состояния на модели представления -Xamarin Forms - PullRequest
0 голосов
/ 24 февраля 2020

Я хотел бы вызвать каждое отдельное состояние этой кнопки, я добавил свойство команды, но это реагирует на оба состояния. Как я могу определить каждое отдельное состояние и выполнить действие на основе этого 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>

ViewModel

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*

        }

1 Ответ

0 голосов
/ 25 февраля 2020

Если я не ошибаюсь, вы всегда можете сделать что-то, как показано ниже, и перенести свою команду непосредственно в Диспетчер состояния Visual.

<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>

Я использовал обычную кнопку, хотя вы всегда можете заменить ее, как вам удобно!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...