Xamarin.forms 交换项目2 listview xamarin表单
因此,基本上我必须将一个项目从一个列表视图移动到另一个列表视图,位置就是您使用xamarin.forms点击的位置 我现在的想法是交换他们的价值观 但问题是我根本不理解xamarin 如果你问我为什么要和xamarin一起工作,那么答案是我的队友想要xamarin,所以我完蛋了 我试着做一些关于物品点击之类的文档和教程,但我认为我检查的方向是错误的 所以,如果有人能告诉我,为了让代码像那样工作,我实际上需要学习和做些什么Xamarin.forms 交换项目2 listview xamarin表单,xamarin.forms,Xamarin.forms,因此,基本上我必须将一个项目从一个列表视图移动到另一个列表视图,位置就是您使用xamarin.forms点击的位置 我现在的想法是交换他们的价值观 但问题是我根本不理解xamarin 如果你问我为什么要和xamarin一起工作,那么答案是我的队友想要xamarin,所以我完蛋了 我试着做一些关于物品点击之类的文档和教程,但我认为我检查的方向是错误的 所以,如果有人能告诉我,为了让代码像那样工作,我实际上需要学习和做些什么 我很感激从Xamarin开始有时会很棘手,但我相信你会在一些教程之后掌握窍
我很感激从Xamarin开始有时会很棘手,但我相信你会在一些教程之后掌握窍门 假设您使用的是XAML,我相信以下内容应该会对您有所帮助:
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Test.MultiListView">
<StackLayout Orientation="Horizontal" HorizontalOptions="FillAndExpand">
<ListView x:Name="ListOneListView" HorizontalOptions="FillAndExpand" ItemsSource="{Binding ListOne}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Label Text="{Binding Title}" />
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<StackLayout VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
<Button HorizontalOptions="FillAndExpand" Text="Add" Clicked="Add" VerticalOptions="Center" />
<Button HorizontalOptions="FillAndExpand" Text="Remove" Clicked="Remove" VerticalOptions="Center" />
</StackLayout>
<ListView x:Name="ListTwoListView" HorizontalOptions="FillAndExpand" ItemsSource="{Binding ListTwo}" >
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Label Text="{Binding Title}" />
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ContentPage>
代码背后:
using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Globalization;
using Xamarin.Forms;
namespace Test
{
public partial class MultiListView : ContentPage
{
MultiListViewVM vm;
public MultiListView()
{
vm = new MultiListViewVM();
InitializeComponent();
BindingContext = vm;
}
public void Add(object sender, EventArgs e)
{
if(ListOneListView.SelectedItem == null)
{
return;
}
vm.ListTwo.Add(ListOneListView.SelectedItem as ListItem);
vm.ListOne.Remove(ListOneListView.SelectedItem as ListItem);
ListOneListView.SelectedItem = null;
}
public void Remove(object sender, EventArgs e)
{
if(ListTwoListView.SelectedItem == null)
{
return;
}
vm.ListOne.Add(ListTwoListView.SelectedItem as ListItem);
vm.ListTwo.Remove(ListTwoListView.SelectedItem as ListItem);
ListTwoListView.SelectedItem = null;
}
}
class MultiListViewVM : INotifyPropertyChanged
{
private ObservableCollection<ListItem> listOne;
private ObservableCollection<ListItem> listTwo;
public ObservableCollection<ListItem> ListOne
{
get
{
return listOne;
}
set
{
listOne = value;
OnPropertyChanged("ListOne");
}
}
public ObservableCollection<ListItem> ListTwo
{
get
{
return listTwo;
}
set
{
listTwo = value;
OnPropertyChanged("ListTwo");
}
}
public MultiListViewVM()
{
ListOne = new ObservableCollection<ListItem>();
ListTwo = new ObservableCollection<ListItem>();
SetupData();
}
private void SetupData()
{
for (int i = 0; i < 7; i++)
{
var dayName = new CultureInfo("en-US").DateTimeFormat.GetDayName((DayOfWeek)i);
var item = new ListItem(dayName, "Description");
ListOne.Add(item);
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string prop)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(prop));
}
}
class ListItem
{
public string Title { get; set; }
public string Description { get; set; }
public ListItem(string title, string description)
{
Title = title;
Description = description;
}
}
}
使用系统;
使用System.Collections.ObjectModel;
使用系统组件模型;
利用制度全球化;
使用Xamarin.Forms;
名称空间测试
{
公共部分类MultiListView:ContentPage
{
多列表视图虚拟机;
公共多列表视图()
{
vm=新的MultiListViewVM();
初始化组件();
BindingContext=vm;
}
public void Add(对象发送方、事件参数)
{
if(ListOneListView.SelectedItem==null)
{
返回;
}
添加(ListOneListView.SelectedItem作为ListItem);
vm.ListOne.Remove(ListOneListView.SelectedItem作为ListItem);
ListOneListView.SelectedItem=null;
}
公共无效删除(对象发送方,事件参数)
{
如果(ListTwoListView.SelectedItem==null)
{
返回;
}
添加(ListTwoListView.SelectedItem作为ListItem);
vm.ListTwo.Remove(ListTwoListView.SelectedItem作为ListItem);
ListTwoListView.SelectedItem=null;
}
}
类MultiListViewVM:INotifyPropertyChanged
{
私有可观察收集列表;
私人可观察收集清单2;
公共可观测收集列表一
{
得到
{
返回列表一;
}
设置
{
listOne=值;
OnPropertyChanged(“ListOne”);
}
}
公共可观测收集列表二
{
得到
{
返回列表2;
}
设置
{
listTwo=值;
OnPropertyChanged(“列表二”);
}
}
公共MultiListViewVM()
{
ListOne=新的ObservableCollection();
ListTwo=新的ObservableCollection();
SetupData();
}
私有void SetupData()
{
对于(int i=0;i<7;i++)
{
var dayName=new CultureInfo(“en-US”).DateTimeFormat.GetDayName((DayOfWeek)i);
var项目=新列表项目(dayName,“描述”);
列表一。添加(项目);
}
}
公共事件属性更改事件处理程序属性更改;
公共无效OnPropertyChanged(字符串属性)
{
PropertyChanged?.Invoke(这是新的PropertyChangedEventArgs(prop));
}
}
类列表项
{
公共字符串标题{get;set;}
公共字符串说明{get;set;}
公共列表项(字符串标题、字符串描述)
{
头衔=头衔;
描述=描述;
}
}
}
希望这很容易理解。我想我明白了。。。但我也需要把名单上的位置作为目标。。。我可以通过添加第三个隐藏列表来实现我认为。。。thx现在有很多,只是想弄清楚如何把它放在选定的位置上。。。