Как я могу передать Entry.Text в качестве CommandParameter для кнопки в XAML? - PullRequest
0 голосов
/ 18 октября 2018

У меня есть страница, единственная цель которой - заставить пользователя ввести свое отображаемое имя в поле ввода, а затем нажать кнопку, которая переместит пользователя на следующую страницу.

            <Grid.RowDefinitions>
                <RowDefinition Height="0.10*"/>
                <RowDefinition Height="0.20*"/>
                <RowDefinition Height="0.15*"/>
                <RowDefinition Height="0.40*"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <Label Style="LargeRegularLabel" Text="Enter Your Display Name:" 
                   Grid.Row="1" VerticalOptions="End" HorizontalOptions="Start"/>
            <Entry x:Name="DisplayNameEntry" Grid.Row ="2" 
                   Placeholder="Enter Name Here" 
                   Text="{Binding DisplayName, Mode=TwoWay}" />
            <Button x:Name="BeginButton" Text="Begin Quiz" 
                    Grid.Row="4" 
                    HorizontalOptions="Center" VerticalOptions="Center" 
                    Command="{StaticResource BeginQuizButtonCommand}" CommandParameter="{Binding Source=DisplayNameEntry,  Path=Text}"/>
        </Grid>

Ввыше XAML у меня есть это.

CommandParameter="{Binding Source=DisplayNameEntry,  Path=Text}"

Я надеялся, что это позволит мне взять текст из поля ввода при нажатии кнопки и передать его в качестве параметра соответствующей команде, а затем соответствующий метод вViewModel, который определяет, является ли это действительным именем.

Однако, похоже, он просто ничего не передает команде.Когда я помещаю точку останова в метод Execute () команды, я вижу, что значение параметра равно нулю.

Как мне получить этот текст из Записи, используя XAML?

1 Ответ

0 голосов
/ 19 октября 2018

Вам нужно получить ссылку на элемент, а затем выбрать свойство Source=DisplayNameEntry, которое будет просто искать его в BindingContext.

CommandParameter="{Binding Source={x:Reference DisplayNameEntry}, Path=Text}"

Как уже упоминалось @JohnnyQ, вы также можете использовать ElementName.Я предлагаю вам пройти этот пост на разницу между ними

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