我需要将所选项目添加到此集合中.. 我在页面上选择我的项目,然后出现appbar,我想在appbar按钮上点击事件,将项目添加到将在另一页上显示的集合中。
private void Button_Tapped_1(object sender, TappedRoutedEventArgs e)
{
AllActors m = new AllActors();
ActorsObject objkt = itemGridView.SelectedItem;
m.allActors.Add(objkt);
}
这不起作用......这是我的课程:
public class AllActors : LivingDataCommon
{
public AllActors()
: base(String.Empty, String.Empty)
{
}
public AllActors(String ID, String title)
: base(ID, title)
{ }
private ObservableCollection<ActorsObject> _AllActors = new ObservableCollection<ActorsObject>();
public ObservableCollection<ActorsObject> allActors
{
get { return this._AllActors; }
}
}
答案 0 :(得分:3)
问题一:编译错误“无法隐式转换类型”
ActorsObject objkt = itemGridView.SelectedItem;
GridView的SelectedItem属性返回一个对象。您正在尝试将其分配给ActorsObject类型的变量,并且编译器不能认为这是可以的。你必须告诉它......
ActorsObject objkt = (ActorsObject)itemGridView.SelectedItem;
编译器的错误消息明确询问“你错过了演员吗?”并指出这一行。这是有用的信息 - 它只是告诉你什么是错的,并建议如何解决它。总是阅读编译器错误并考虑他们告诉你的内容,不要只是将其缩小为“它不起作用”。
<小时/> 问题二:“它没有做我想做的事”
private void Button_Tapped_1(object sender, TappedRoutedEventArgs e)
{
AllActors m = new AllActors();
ActorsObject objkt = itemGridView.SelectedItem;
m.allActors.Add(objkt);
}
仔细阅读并考虑它正在做什么。在函数的第一行,您将创建一个新的AllActors对象并将其分配给'm'。在第三行,您对该对象进行了更改。但是你的功能结束了,你抛弃了那个对象!
更有可能实现您想要的东西,将AllActors对象创建为窗口类中的字段。然后你可以保持对象,绑定它,并保持对它的任何更改。这样的事情,虽然你还需要一些UI来显示这些数据。
private AllActors _m = new AllActors();
private void Button_Tapped_1(object sender, TappedRoutedEventArgs e)
{
ActorsObject objkt = (ActorsObject)itemGridView.SelectedItem;
_m.allActors.Add(objkt);
}
答案 1 :(得分:0)
您需要更改
ActorsObject objkt = itemGridView.SelectedItem;
到
ActorsObject objkt = (ActorsObject)itemGridView.SelectedItem;
你错过了那里的演员。
答案 2 :(得分:0)
试试这个:
ActorsObject objkt = (ActorsObject ) itemGridView.SelectedItem;
m.allActors.Add(objkt);
或
ActorsObject objkt = itemGridView.SelectedItem as ActorsObject;
m.allActors.Add(objkt);
您必须投射SelectedItem,因为object
不是ActorsObject