명확한 텍스트 항목에서 뷰 모델을 사용하여 RelayCommand

0

질문

내가 좋아하는 명확한 항목에서 텍스트 내 뷰 모델는 바인딩다. 아래 코드에서는 내가 그것을 시도를 사용하여 RelayCommand 지만,그것은 작동하지 않습니다.

내가 무엇을 달성하고 싶은 경우:버튼을 클릭하면 이름 AddQuestionToQuiz함수가 실행 명령을 사용하여 버튼입니다. 기능 OnCreateQuizClick()에 위치한 시점이 triggerd 고 이 기능을 요구하는 명확한 내 항목 텍스트는지에 대한 순간입니다.

도를 사용하여 정기적 명령을 사용하는 대신 RelayCommand 이지만,또한 여기에서 그것을 원하지 않는다.

편집:아래 코드의 잘 작동합니다-트워크 코드를 사용하는 명확한 항목에 텍스트를 클릭할 때 버튼을에서 뷰 모델을 구현하 INotifyPropertyChanged 인터페이스

.xaml-코드

<Button x:Name="AddQuestionToQuiz" WidthRequest="200" Command="{Binding CreateQuizCommand}" Style="{StaticResource ButtonStyle}" Text="Add question to quiz"></Button>

뷰 모델드

internal class CreateQuizPageViewModel : INotifyPropertyChanged
{
    // Quiz Name Input
    public String QuizNameInput { get; set; }

    private String quizQuestionInput = "";
    public String QuizQuestionInput 
    {
        get { return quizQuestionInput; }   
        set { quizQuestionInput = value; OnPropertyChanged(); }
    } 

    public RelayCommand CreateQuizCommand { get; set; }

    public CreateQuizPageViewModel()
    {
        CreateQuizCommand = new RelayCommand(OnCreateQuizClick);
    }

    public event PropertyChangedEventHandler PropertyChanged;

    public void OnPropertyChanged(string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }

    public void OnCreateQuizClick()
    {
        QuizQuestionInput = "";
    }
}
1

최고의 응답

0

편집:뷰 모델 업데이트

.xaml-코드

<Button x:Name="AddQuestionToQuiz" WidthRequest="200" Command="{Binding CreateQuizCommand}" Style="{StaticResource ButtonStyle}" Text="Add question to quiz"></Button>

뷰 모델드

internal class CreateQuizPageViewModel : INotifyPropertyChanged
{
    // Quiz Name Input
    public String QuizNameInput { get; set; }

    private String quizQuestionInput = "";
    public String QuizQuestionInput 
    {
        get { return quizQuestionInput; }   
        set { quizQuestionInput = value; OnPropertyChanged(); }
    } 

    public RelayCommand CreateQuizCommand { get; set; }

    public CreateQuizPageViewModel()
    {
        CreateQuizCommand = new RelayCommand(OnCreateQuizClick);
    }

    public event PropertyChangedEventHandler PropertyChanged;

    public void OnPropertyChanged(string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }

    public void OnCreateQuizClick()
    {
        QuizQuestionInput = "";
    }
}
2021-11-24 08:58:05

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................