如何将listview tapped事件中的数据传递到另一个页面中的telerik数据表单

时间:2018-06-06 13:50:07

标签: xamarin xamarin.forms telerik

我需要将数据从ListView传递到TodoDetail页面,在那里我有一个Telerik DataForm,但我不知道如何使它工作。如果我使用普通的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 个答案:

答案 0 :(得分:0)

您必须在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>