Как передать данные из события касания списка в форму данных telerik на другой странице - PullRequest
0 голосов
/ 06 июня 2018

Мне нужно передать данные из 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 голосов
/ 06 июня 2018

Необходимо добавить привязку между SelectedItem и ListView

. Вот пример:

ViewModel:

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...