Значение свойства изменяется, но не обновляется пользовательский интерфейс - PullRequest
0 голосов
/ 03 августа 2020

Этот вопрос, кажется, часто возвращается, но я не нахожу ответа, который мог бы решить мою проблему.

Да, у меня реализована функция NotifyPropertyChanged, и она работает во всем моем приложении. Но для этого я пытаюсь изменить видимость моего стека, если щелкнуть ImageButton, если я смотрю на отладчик, значение изменяется, но визуально не меняется.

ImageButton все еще существует, но значение в отладчик равен false.

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

Спасибо.

Второй ImageButton привязан к команде DeleteIconPressed, которая запускает изменение IsVisible стека во втором фрагменте кода.

        <CollectionView.Header>
            <StackLayout>
                <StackLayout Orientation="Horizontal" Spacing="220">
                    <Label Text="Agenda" TextColor="Black" FontSize="18"/>
                    <StackLayout Orientation="Horizontal">


                    <ImageButton Source="iconplus.png"  HeightRequest="30" WidthRequest="30" Clicked="GoToNewTaskPage"></ImageButton>
                    <ImageButton Source="iconmoins.png"  HeightRequest="30" WidthRequest="30" Command="{Binding DeleteIconPressed}"></ImageButton>
                    

                </StackLayout>


            </StackLayout>

        </StackLayout>

    </CollectionView.Header>

Далее в коде у меня есть этот stacklayout, который я привязал к логическому свойству, чтобы изменить видимость

<StackLayout x:Name="DeleteIcon" Grid.Row="2" Grid.Column="6" IsVisible="{Binding DeleteIsPressed}">
<ImageButton Source="iconmoins.png" HeightRequest="25" Command="{Binding Source={x:Reference TasksGroupCollection}, Path=BindingContext.DeleteTasksGroupCommand }" CommandParameter="{Binding .}" BackgroundColor="#00FBC1BC"></ImageButton>
</StackLayout>

В моей модели просмотра, которая наследуется от BaseViewModel, имеющего N Реализован интерфейс otify (который работает для всего, что я делал в своем приложении), у меня реализовано логическое значение и команда.

private bool deleteIsPressed;
public bool DeleteIsPressed
{
    get
    {
        return deleteIsPressed;
    }
    set
    {
        deleteIsPressed = value;
        NotifyPropertyChanged("DeleteIsPressed");
    }
}

    public Command DeleteIconPressed { get; set; }

    public TasksGroupPageViewModel()
    {


        DeleteIconPressed = new Command( () => DeleteIconPress());


        GetTaskgroups();


    }

    private void DeleteIconPress()
    {
        DeleteIsPressed = false;

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