0

選択したアイテムをこのコレクションに追加する必要があります。ページでアイテムを選択すると、アプリバーが表示され、アプリバーボタンのタップイベントで、他のページに表示されるコレクションにアイテムを追加したい..

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

問題 1: コンパイラ エラー「型を暗黙的に変換できません」

ActorsObject objkt = itemGridView.SelectedItem;

GridView の SelectedItem プロパティはオブジェクトを返します。それを ActorsObject 型の変数に代入しようとしていますが、コンパイラはこれが問題ないと想定できません。あなたはそれを言わなければなりません...

ActorsObject objkt = (ActorsObject)itemGridView.SelectedItem;

コンパイラのエラー メッセージは、具体的に「キャストがありませんか?」というものでした。と、この行を指さしました。これは有用な情報です。何が間違っていて、それを修正する方法を提案しただけです。常にコンパイラ エラーを読み、それが何を伝えているかを考えてください。「うまくいかない」と単純に考えてはいけません。


問題 2: 「やりたいことをやってくれない」

private void Button_Tapped_1(object sender, TappedRoutedEventArgs e)
    {
        AllActors m = new AllActors();
        ActorsObject objkt = itemGridView.SelectedItem;
        m.allActors.Add(objkt);
    }

これを注意深く読んで、それが何をしているのか考えてみてください。関数の最初の行では、新しい AllActors オブジェクトを作成して、それを「m」に割り当てています。3 行目で、そのオブジェクトに変更を加えます。しかし、その後関数が終了し、そのオブジェクトを捨ててしまいました!

目的を達成するには、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 に答える