2012-06-01 70 views
0

我開始在c#中使用wpf和mvvm模式製作程序來學習此程序語言。我很抱歉,我終於遇到了使用Google無法解決的問題。但我試着精確。將SelectedItem作爲DataContext獲取完全獨立的Uielement

起初I present你的GUI,所以我可以更容易地解釋我的問題。

MainWindow的xaml文件來自here

正如你所看到的,這不是一個嚴肅而重要的程序,我只是讓它學習一些技巧。

現在到了我的主要問題 我還需要第二次的ListView的SelectedItem屬性(耗材)在頁腳。我認爲這不會是一個嚴重的問題,因爲我可以使用相對路徑和列表視圖的名稱將它綁定到選定的項目。這不起作用,一旦我添加一個項目到這個列表視圖導致一個空引用錯誤。我仔細檢查了代碼,我確信我沒有在那裏犯錯。所以我認爲問題在於它是一種後裔UI元素。

我的下一個嘗試是在我的主視圖模型中創建一個新的屬性,它綁定到選定的項目。你可以在第136行找到它。但是,當我發現,這也導致我一個System.NullReferenceException太多,如果我點擊一個項目。我認爲這是因爲這個屬性是隻讀的。我不知道該怎麼辦。 沒有任何其他可能性將SelectedItem作爲DataContext綁定到頁腳

我的第二個問題是關於第27行。 TabControl應始終自動選擇第一個選項卡。但它只是每隔一秒纔會出現。這很有趣。如果我向下滾動冠軍組合框,第一個選項卡雲:選擇 - 未選擇 - 選擇 - ...

我的第三個也是最後一個問題是關於72這類似於線50(DataContext的太相同)但是,您看到第50行的itemtemplate的ContextMenu的ICommand起作用,而contextmenu(l.72)不調用Icommand。奇怪的。

這是一個有趣的項目,所以如果我的信息不夠,我可以爲您提供源代碼。 - 對不起,只有兩個超鏈接allowed--

請幫助我。我對這種無法預料的行爲感到有點困惑。我還沒有找到任何可以幫助我的東西,對於這些問題的答案很簡單,我很抱歉:P

只是爲了強調:主要問題是我真的需要一個答案。第二個可以通過編程方式解決。爲了解決第三個問題,我可以刪除這個功能。

我很高興爲每一個提示!

+0

將問題分成多個部分(多個問題),每個問題都有示例代碼。這是一個很大的問題,難以一次閱讀。人們也可能只回答你的一個問題,這也使他們更容易回答。 –

回答

0

沒有經過整個問題消失,但你應該選擇的項目綁定到你的視圖模型屬性(雙向綁定),然後其他的UIElement綁定到該視圖模型屬性(可能是一個雙向綁定或檢查值相等,以不會導致計算器異常)

+0

如果您已經閱讀了xaml文件的第136行,您會看到我已經這樣做了。只要添加一個Item,它就會給我一個System.NullReferenceException。雙向綁定和OneWayToSource測試。不管怎麼說,還是要謝謝你。 – user1431279

+0

嘗試在其中放置一個值轉換器,並查看引起空引用的原因。 –

+0

對不起,如果你願意的話,我可以給你一個視頻-.-我能看到的是,如果我調試的是,它正確設置選定的項目,然後引發「屬性changed」事件,然後選定的項目被調用〜三次。沒有再次點擊,選定的項目再次被保存,並調用〜8次,現在我得到相同數量的空引用錯誤。我沒有跳過任何調試跳過,所以它的調用來自gui。 (所選的項目不在c#代碼中使用) - >使用OneWayToSource會導致相同的錯誤! – user1431279