如何将列表视图点击事件中的数据传递到另一个页面中的 Telerik 数据表单

Posted

技术标签:

【中文标题】如何将列表视图点击事件中的数据传递到另一个页面中的 Telerik 数据表单【英文标题】:How to pass data from the listview tapped event to a telerik dataform in another page 【发布时间】:2018-11-16 05:50:24 【问题描述】:

我需要将数据从 ListView 传递到有 Telerik DataForm 的 TodoDetail 页面,但我不知道如何使其工作。如果我使用普通的 Xamarin Forms 控件,它可以正常工作,但需要它与 Telerik DataForm 控件一起使用。

这是我的代码:

​Todo.xaml 列表项点击处理程序

private async void ToDoTaskTap(object sender, ItemTappedEventArgs e)

    var user = ToDoTask.SelectedItem as tblEmpTask;
    if (user != null)
    
        var mainViewModel = BindingContext as MainViewModel;
        if (mainViewModel != null)
        
            mainViewModel.Selected = user;
            await Navigation.PushAsync(new ToDoDetail(mainViewModel));    ​
        
    

tblEmpTask.cs

public  class tblEmpTask

    public string strTaskName  get; set; 

TodoDetail.xaml

<telerikInput:RadDataForm x:Name="dataForm">
    <telerikInput:RadDataForm.Source>
        <local1:MainViewModel />
    </telerikInput:RadDataForm.Source>
</telerikInput:RadDataForm>

MainViewModel.cs

public class MainViewModel : INotifyPropertyChanged

    ​public tblEmpTask Selected
    
        get  return _Selected; 
        set
        
            _Selected = value;
            OnPropertChanged();
        
    
        ​
    [DisplayOptions(Header = "Name")]
    public string Name
    
        get  return this.Selected.strTaskName; 
        set
        
            if (value != this.Selected.strTaskName)
            
                this.Selected.strTaskName = value;
                OnPropertChanged();
            
        
    

【问题讨论】:

【参考方案1】:

您必须在SelectedItemListView 之间添加绑定

这是一个例子:

视图模型:

public List<object> ItemsSource  get; set; 

public object SelectedItem 
    set  SelectedItemChanged(value); 


async void SelectedItemChanged(object value) 
    await App.Current.MainPage.Navigation.PushAsync(new AboutPage(SelectedItem));

页面:

<ListView
    ItemsSource="Binding ItemsSource"
    SelectedItem="Binding SelectedItem, Mode=OneWayToSource">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <Label Text="Binding ."></Label>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

【讨论】:

对于自动实现属性更改接口,我建议使用 Fody.PropertyChanged 我想你没有得到我的问题我有列表视图,当我点击列表视图时,我将所有数据传递到新页面,即 tododetail 页面,如果我使用 xamarin 控制它的工作正常但我想使用 Telerik 表单tododetail 页面中的数据,我被困在这里 使用&lt;telerikInput:RadDataForm.GestureRecognizers&gt;&lt;TapGestureRecognizer Command="Binding CustomCommand"&gt;&lt;/TapGestureRecognizer&gt;&lt;/telerikInput:RadDataForm.GestureRecognizers&gt; 什么是自定义命令?我的意思是这个命令中的代码是什么? 此属性来自 ViewModel public ICommand CustomCommand=&gt; _customCommand?? new Command(() =&gt; Console.WriteLine("CustomLogic"); );

以上是关于如何将列表视图点击事件中的数据传递到另一个页面中的 Telerik 数据表单的主要内容,如果未能解决你的问题,请参考以下文章

如何将反序列化JSON中的列表传递给视图到选择列表

ASP.NET怎么将本页面内的某个参数传递到另一个页面中呢?

UITableViewCell 中的 UICollectionView 如何设置选择以将数据从当前视图传递到另一个视图

当我单击列表视图的操作项时,将文本从列表视图传递到另一个活动

如何将列表视图中的数据从一个片段发送到另一个片段

将下拉列表中的值从一个 php 传递到另一个