C# 单元格中带有按钮的Xamarin Telerik ListView-按钮';s点击事件获胜';t火

C# 单元格中带有按钮的Xamarin Telerik ListView-按钮';s点击事件获胜';t火,c#,xaml,xamarin.forms,telerik,C#,Xaml,Xamarin.forms,Telerik,我正在用Telerik RadListView组件构建一个Xamarin表单页面。listview的ItemTapped事件工作正常,但当我向ListViewTemplateCell.View中添加按钮时,按钮的Clicked事件不会触发 XAML: 我假设ListView的ItemTapped事件覆盖了按钮的Clicked事件。。。有人能帮助我在这种情况下如何使按钮可点击吗?我有一个设置与您的页面略有不同的页面,我在列表项上设置了按钮来解决这个问题。这可能只是因为控件在您发布后已被更新和修复,

我正在用Telerik RadListView组件构建一个Xamarin表单页面。listview的ItemTapped事件工作正常,但当我向ListViewTemplateCell.View中添加按钮时,按钮的Clicked事件不会触发

XAML:


我假设ListView的ItemTapped事件覆盖了按钮的Clicked事件。。。有人能帮助我在这种情况下如何使按钮可点击吗?

我有一个设置与您的页面略有不同的页面,我在列表项上设置了按钮来解决这个问题。这可能只是因为控件在您发布后已被更新和修复,也可能是因为我设置列表的方式有所不同。(我认为自从你发布以来,telerik xamarin控件至少有3次更新)

一个快速的尝试…制作
SelectionMode=“None”
并取下点击的处理程序…然后查看按钮是否工作。如果这样做有效,您可以在整个列表项的网格下创建一个可点击区域(透明、无文本按钮或类似内容)…然后在网格中放置按钮(将以更高的z顺序)

在我的例子中,我没有项目处理程序。相反,我将
SelectedItem
双向绑定到视图模型属性……这样,当所选项目发生更改时,我会收到以下通知:

        <telerikDataControls:RadListView ItemsSource="{Binding Path=SelectedItems}"
                                         SelectionMode="Single"
                                         SelectedItem="{Binding Path=SelectedItem,Mode=TwoWay}"
                                         VerticalOptions="FillAndExpand">

这样,我的视图模型属性中的设置值就像事件一样…在这种情况下,我可以避免列表项点击的事件处理程序…同时仍然获得正常的选择行为…以及项上的按钮

我有一个页面的设置与您的页面略有不同,我在列表项上有按钮来解决这个问题。这可能只是因为控件在您发布后已被更新和修复,也可能是因为我设置列表的方式有所不同。(我认为自从你发布以来,telerik xamarin控件至少有3次更新)

一个快速的尝试…制作
SelectionMode=“None”
并取下点击的处理程序…然后查看按钮是否工作。如果这样做有效,您可以在整个列表项的网格下创建一个可点击区域(透明、无文本按钮或类似内容)…然后在网格中放置按钮(将以更高的z顺序)

在我的例子中,我没有项目处理程序。相反,我将
SelectedItem
双向绑定到视图模型属性……这样,当所选项目发生更改时,我会收到以下通知:

        <telerikDataControls:RadListView ItemsSource="{Binding Path=SelectedItems}"
                                         SelectionMode="Single"
                                         SelectedItem="{Binding Path=SelectedItem,Mode=TwoWay}"
                                         VerticalOptions="FillAndExpand">

这样,我的视图模型属性中的设置值就像事件一样…在这种情况下,我可以避免列表项点击的事件处理程序…同时仍然获得正常的选择行为…以及项上的按钮

传递命令参数值传递命令参数值
        <telerikDataControls:RadListView ItemsSource="{Binding Path=SelectedItems}"
                                         SelectionMode="Single"
                                         SelectedItem="{Binding Path=SelectedItem,Mode=TwoWay}"
                                         VerticalOptions="FillAndExpand">
protected bool SetProperty<T>( ref T existing, T value, Action whenChanged = null, [CallerMemberName]string propertyName = "" )
{
  if ( EqualityComparer<T>.Default.Equals( existing, value ) ) return false;
  existing = value;
  whenChanged?.Invoke( );
  OnPropertyChanged( propertyName );
  return true;
}
ObservableCollection<T> selectedItems;
public ObservableCollection<T> SelectedItems
{
  get { return selectedItems; }
  set { SetProperty( ref selectedItems, value ); }
}
T selectedItem;
public T SelectedItem
{
  get { return selectedItem; }
  set { SetProperty( ref selectedItem, value, MaybeSelectItem ); }
}
void MaybeSelectItem( )
{
  if ( SelectItem.CanExecute( null ) )
  {
    SelectItem.Execute( null );
  }
}