View.ContextActions не запускается для кода позади Clicked - PullRequest
0 голосов
/ 27 января 2019

Проблема:

После нескольких примеров, один , два , три , я не могу получить мои ContextActions для подключения к моему коду позади.

Это из примеров. MenuItem_Clicked не подключает XAML к коду позади

<ViewCell.ContextActions>
    <MenuItem Clicked="MenuItem_Clicked" Text="TEST" Command="{Binding .}"/>
</ViewCell.ContextActions>

Установка:

Я просто работаю с базовым примером, который нашел в Интернете. это не MVVM. У меня есть настройка и работа действия ListItems_Refresh.

Цель Кодекса:

Когда пользователи нажимают на строку, я хочу открыть браузер по умолчанию и перейти к URL-адресу из строки.

Я хотел бы знать, как я могу устранить эту проблему или если у меня есть явная опечатка. Заранее спасибо

Код:

XAML

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:local="clr-namespace:HelloWorld"
         x:Class="HelloWorld.MainPage">
    <StackLayout Margin="20">
        <Label Text="60 Second Sports" FontAttributes="Bold" HorizontalOptions="Center"/>
          <ListView x:Name="rssList" IsPullToRefreshEnabled="True" Refreshing="ListItems_Refreshing">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <ViewCell.ContextActions>
                          <MenuItem Clicked="MenuItem_Clicked" Text="TEST" Command="{Binding .}"/>
                        </ViewCell.ContextActions>
                        <StackLayout>

                            <Label Text="{Binding Title}" Font="8"/>
                            <!--<Label Text="{Binding Description}" Font="6"/>-->
                            <Label Text="{Binding PublishedDate}" Font="5"/>
                            <Label Text="{Binding Link}" Font="5"/>
                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
   </StackLayout>
</ContentPage>

Код сзади

    private void MenuItem_Clicked(object sender, EventArgs e)
    {
        Console.WriteLine("button was clicked");
        System.Diagnostics.Process.Start("http://google.com");
    }


    protected void ListItems_Refreshing(object sender, EventArgs e)
    {
        Console.WriteLine("refresh triggered");

        //doRefresh(); 
        //my method for repopulating the list ImageListView.EndRefresh(); 
        //this is a very important step. It will refresh forever without triggering it }
    }

1 Ответ

0 голосов
/ 27 января 2019

Если вы хотите открыть браузер при нажатии на элемент ListView, вы можете просто прослушать событие ItemTapped.

ItemTapped срабатывает при нажатии на предмет.

Итак, в вашем ListView

<ListView x:Name="rssList" IsPullToRefreshEnabled="True" 
          ItemTapped="listItemTapped" 
          Refreshing="ListItems_Refreshing">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <StackLayout>

                            <Label Text="{Binding Title}" Font="8"/>
                            <!--<Label Text="{Binding Description}" Font="6"/>-->
                            <Label Text="{Binding PublishedDate}" Font="5"/>
                            <Label Text="{Binding Link}" Font="5"/>
                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

И, метод слушателя.

 public void listItemTapped(object sender, ItemTappedEventArgs e)
 {
       Console.WriteLine("button was clicked");
       var item = (YourModel)e.Item;
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...