2013-06-21 48 views
0

我需要將選定的項目添加到此集合.. 我選擇我的項目在一個頁面上,然後出現appbar,我想在appbar按鈕點擊事件添加項目集合,將顯示在其他頁面上。將數據項添加到observablecollection?

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; } 
    } 

} 
+1

「這行不通」 不很有幫助。它以什麼方式不起作用?拋出異常嗎?它運行良好,但不符合你的期望?你有什麼嘗試? – Chris

+0

這會彈出:錯誤不能將類型'object'隱式轉換爲'LivingAutomation.Data.ActorsObject'。存在明確的轉換(您是否缺少演員?) – zarko

+1

它也會告訴您哪一行導致該錯誤。這應該足以讓你爲自己弄清楚發生了什麼(以及如何解決它),但我會盡快添加一個答案來解釋... – Chris

回答

0

您需要更改

ActorsObject objkt = itemGridView.SelectedItem; 

ActorsObject objkt = (ActorsObject)itemGridView.SelectedItem; 

你在那裏失蹤了。

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); 
    } 
+0

現在這條線不能做我需要它做的事情.. – zarko

+0

(1)你需要做什麼? (2)它在做什麼呢? (3)它編譯好嗎?如果沒有,你會得到什麼錯誤信息? (4)是否會拋出異常?如果是這樣,什麼異常和它在哪裏拋出?像這樣的信息很重要。如果您的編譯器或程序正在向您提供信息,請不要忽略它。如果你不理解它,至少給我們幫助我們來幫助你。這裏沒有人是精神病患者。 – Chris

+0

現在這條線沒有做什麼,我需要做的.. 'm.allActors.Add(objkt);' 我需要它所選對象添加到allActors ObsevableCollection,我需要將代碼放在如此我可以在我的Home.xaml頁面上使用這個集合作爲數據源..這個代碼不工作: 'var allactors = AllActors(); this.DefaultViewModel [「Group」] = allactors; this.DefaultViewModel [「Items」] = allactors.allActors;' – zarko

0

試試這個:

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

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

你要投的SelectedItem,因爲它是不objectActorsObject

相關問題