0

我需要将所选项目添加到此集合中。我在页面上选择我的项目,然后出现 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; }
    }

}
4

3 回答 3

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);
    }
于 2013-06-21T12:34:19.793 回答
0

尝试这个:

ActorsObject objkt = (ActorsObject ) itemGridView.SelectedItem;
m.allActors.Add(objkt);

或者

ActorsObject objkt = itemGridView.SelectedItem as ActorsObject;
m.allActors.Add(objkt);

您必须投射 SelectedItem,因为它object不是ActorsObject

于 2013-06-21T12:35:12.377 回答
0

你需要改变

ActorsObject objkt = itemGridView.SelectedItem;

ActorsObject objkt = (ActorsObject)itemGridView.SelectedItem;

你在那里错过了一个演员。

于 2013-06-21T12:32:15.463 回答