2011-08-03 66 views
0

首先我要感謝你在這個論壇上閱讀的許多好帖子。不幸的是,我無法找到任何幫助解決當前問題的方法(無論是在這裏還是在其他地方)。SelectedItem的SelectedItem

我試圖做聽起來很簡單,但我不知道如何得到它的工作......也許我還是到新的WPF或我不知道的事情wpfy足夠:)

我設計的前端在自動化生產的一部分:

  • 我在哪裏托盤可放在地方數量(但它可以爲空好)。
  • 每個托盤具有至多3個地方的部件可以安裝動態數據庫的創建
  • 一切並反應的變化。
    • 零件托盤上的位置來自於數據庫以及與應可視化

我想什麼有是:

  • 在托盤概述 - 預覽托盤的地方
  • 當我選擇一個地方我想查看該地點的詳細視圖
  • 當我cli關於詳細的托盤我想看看細節部分的托盤的一部分CK

前兩點是很簡單,很好地工作:

  • 我已經得到了每一個組件一個DataTemplate (零件,托盤,托盤位置)。其實這些都是被導入爲的DataTemplates
  • 概述用戶控件與場所作爲DataContext的
  • 對細節的地方觀看我使用用戶控件列表框,並將其綁定到列表框的的SelectedItem

我試圖將文本塊的文本綁定到所選零件的ID ...並失敗。

也許我可以在後面的代碼中使用一些全局變量 - 但這聽起來很醜陋。

任何人都可以幫忙嗎?

回答

1

我有一個解決方案...它不是很好,但工程。

  • 我創造了托盤的事件,觸發,當所選部分發生的變化
  • 我處理在托盤處的事件,並創建一個新的
  • 最後,我處理得概覽並相應地更改詳細視圖

最有可能有更好的解決方案,但它就足夠了。

0

也許嘗試一個ElementName綁定?

<TextBlock Text="{Binding ElementName=Name_of_your_Listbox, Path=SelectedItem.ID" /> 

你可以發佈多一點你的TextBlock和你的綁定代碼?

+0

這不起作用,因爲它嵌套在數據模板中。 – Athanviel

0

上下文是重要的,如果我使用一個ContentControl中並結合其內容到SelectedItem這樣的:

<ContentControl Content="{Binding SelectedItem, ElementName=mylistbox}"> 

我可以綁定到所選擇的項目中的DataTemplate的ID這樣的:

<ContentControl.ContentTemplate> 
    <DataTemplate> 
     <TextBlock Text="{Binding ID}" /> 
    </DataTemplate> 
</ContentControl.ContentTemplate> 

這是因爲設置ContentControlContent也會自動設置DataContext,並且此綁定相對於DataContext,因爲沒有源(ElementName,RelativeSourceSource)已被指定。

我不知道UserControl如何處理上下文,如果DataContext不受影響,這樣的綁定將無法工作。您將需要直接綁定,那麼:

<uc:MyDetailsView Data="{Binding SelectedItem, ElementName=mylistbox}"> 
    <!-- ... --> 
     <TextBlock Text="{Binding SelectedItem.ID, ElementName=mylistbox}" /> 

這當然違背了擺在首位的用戶控件本身綁定的目的。但是除非你發佈了一些相關的代碼,否則很難說出錯。

同時檢查VisualStudio中的輸出窗口,會出現綁定錯誤,並可能提供關於出錯的有用信息。

+0

簡單的數據綁定不是問題 - 看起來我沒有把自己弄清楚。 – Athanviel

+0

@Ahanhan:是的,你當然沒有。 –