Как получить событие нажатия кнопки в ViewCellRenderer Xamarin.Forms - PullRequest
0 голосов
/ 27 апреля 2018

Я создаю пользовательский ViewCell, который содержит кнопку, мне нужно событие нажатия в моем ContentPage

Ответы [ 3 ]

0 голосов
/ 29 апреля 2018

Если вы хотите, чтобы событие было связано с элементом в списке, вам нужно связать команду .

XAML:

<Button Text="{Binding ButtonText}" Command="{Binding ButtonClickedCommand}" />

И, предполагая, что вы присоединяете ViewCell к ListView, в класс, к которому привязан ItemSource, необходимо добавить следующее:

public ICommand ButtonClickedCommand
{
    get
    {
        return new Command(ButtonClicked);
    }
}

public ButtonClicked()
{
    //Handle the button click logic here
}
0 голосов
/ 30 апреля 2018

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

Полный код

CustomViewCell:

public delegate void ClickEventHandler(object sender, EventArgs e);
public event ClickEventHandler ClickEvent;

void ButtonClick(object sender, EventArgs args)
{
    ClickEvent(this, args);
}

ContentPage:

//.xmal
<ListView x:Name="listView"  RowHeight="50">
    <ListView.ItemTemplate>
        <DataTemplate>
            <local:CustomViewCell ClickEvent="ButtonClick"/>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

//.cs    
void ButtonClick(object sender, EventArgs args)
{
    CustomViewCell cell = sender as CustomViewCell;
    object context = cell.BindingContext;//here you can get index or something else
}
0 голосов
/ 27 апреля 2018

В коде xaml для кнопки добавьте событие Clicked: Нажал = "ButtonClicked"

Затем добавьте метод в класс .xaml.cs

void ButtonClicked(object sender, EventArgs e)
{
 ...
}
...