如何在ViewCellRenderer Xamarin.Forms中获取按钮单击事件

时间:2018-04-27 11:09:23

标签: xamarin xamarin.forms xamarin.ios xamarin.android

我正在创建一个包含按钮的自定义ViewCell,我需要在ContentPage

中点击一下

3 个答案:

答案 0 :(得分:0)

在按钮的xaml代码中,添加Clicked事件:     点击= “ButtonClicked”

然后在.xaml.cs类中添加方法

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

答案 1 :(得分:0)

如果您希望链接到列表中的项目的事件,您需要绑定Command

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
}

答案 2 :(得分:0)

如果我理解正确,则不会公开视单元内的按钮,因此您可以在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
}