Xamarin, не могу найти другую кнопку, используя x: name - PullRequest
1 голос
/ 24 марта 2020

У меня возникают некоторые проблемы с поиском другой кнопки в моем ListView.

Вот XAML:

<ListView ItemsSource="{Binding QuestionList}"
                                      x:Name="Item_list"
                                      HasUnevenRows="False"
                                      IsVisible="{Binding IsVisible}"
                                      HeightRequest="5400"
                                      RowHeight="180"
                                      BackgroundColor="#BED6E1">

                                    <ListView.ItemTemplate>
                                        <DataTemplate>
                                            <ViewCell>
                                                <StackLayout BackgroundColor="#BED6E1" HorizontalOptions="Center" VerticalOptions="Center">
                                                    <Label Text="{Binding question}" FontSize="16" Padding="10,20,10,10"/>

                                                    <Grid HorizontalOptions="Center" Padding="15,20,0,10">
                                                        <Grid.ColumnDefinitions >

                                                            <ColumnDefinition Width="*" />
                                                            <ColumnDefinition Width="*" />

                                                        </Grid.ColumnDefinitions>


                                                        <Button x:Name="YesButton" Margin="0,0,20,0" Text="YES" FontAttributes="Bold" BorderWidth="2" BorderColor="White" CornerRadius="10" Clicked="YesButton_Clicked" ClassId="YesButton" BackgroundColor="White" />

                                                        <Button x:Name="NoButton" Margin="0,0,20,0" Grid.Column="1" Text="NO" FontAttributes="Bold" BorderWidth="2" BorderColor="White" CornerRadius="10" BackgroundColor="White" Clicked="NoButton_Clicked"  ClassId="NoButton"/>


                                                    </Grid> 
                                                </StackLayout>
                                            </ViewCell>
                                        </DataTemplate>
                                    </ListView.ItemTemplate>
                                </ListView>

Что я хотел бы сделать, так это то, что если я нажму на YesButton, цвет границы YesButton меняется, и он также меняет цвет границы NoButton.

Я могу ссылаться на кнопку, нажатую следующим образом:

private void YesButton_Clicked(Object sender, EventArgs e)
        {
            var button = (Button)sender;
            button.BorderColor = Xamarin.Forms.Color.FromRgb(33, 255, 20);

... (and here's some other stuff)
        }

Но как я могу ссылаться на другую кнопку? в то же время? В общем, если пользователь нажимает кнопку «Да», цвет границы изменится на эту кнопку, и он «сбросит» цвет границы для кнопки «Нет».

Обратите внимание, что их много кнопки да-нет в списке.

Я пытался использовать X: name, вызывая другую кнопку в коде, подобном следующему:

NoButton.BorderColor = Xamarin.Forms.Color.FromRgb(33, 255, 20);

Но он не находит это и возвращает ошибку. Есть идеи?

1 Ответ

3 голосов
/ 24 марта 2020

Используйте эти events для каждой кнопки Да / Нет

private void Yes_Clicked(object sender, EventArgs e)
{
   (sender as Button).BorderColor = Xamarin.Forms.Color.FromRgb(33, 255, 20);
   Button NoButton = (sender as Button).Parent.FindByName<Button>("NoButton");
   NoButton.BorderColor = Xamarin.Forms.Color.FromRgb(31, 78, 123); 
}

private void No_Clicked(object sender, EventArgs e)
{
   /* Same logic */
   Button YesButton = (sender as Button).Parent.FindByName<Button>("YesButton");
}
...