将数据项添加到observablecollection?

时间:2013-06-21 12:23:10

标签: c# wpf windows-8

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

}

3 个答案:

答案 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