2010-01-18 12 views
3

我有一個ListView是把一個額外的行中的每個記錄的自定義控制模板代碼的方法,這就是定義這樣的事情在Window.Resources ...綁定到後面

<ControlTemplate TargetType="ListBoxItem"> 
    <Border> 
     <StackPanel> 
      <GridViewRowPresenter> 
      <TextBlock Name="myTextBlock" /> 
     </StackPanel> 
    </Border> 
    <ControlTemplate.Triggers> 
     //Triggers here 
    </ControlTemplate.Triggers> 
</ControlTemplate> 

我的問題是我想要將TextBlock中的文本綁定到不同的ItemsSource,而不是在實例化時將綁定到實際ListBox的文本。以編程方式進行綁定是不可能的。我已經嘗試用TextBlock代替另一個ListView並綁定到一個方法,但我無法弄清楚如何使用ObjectDataProvider並將其綁定到後面的代碼中(其中包含一個方法,該方法將返回我想要的東西列表也要綁定),但也遇到了問題。

的情況下,快速一步一步的,我沒有說清楚:

  • 我有一個ListView模板增加了一個額外的行爲每條記錄

  • ListView將被綁定到(說)Foo對象的集合。

  • 問題是我然後想要將多餘的行綁定到一個完全不同的項目源,而不是主要的ListView。它似乎沒有像我能做到這一點從我的模板中:/

所以 - 是有沒有辦法直線上升綁定到方法的結果在我的代碼中定義的背後,我可以在模板中引用?

回答

1

好吧,這是想法:

1)創建這勢必Foo這樣的項目模板列表框中:

------------- 
| DATA HERE | 
|   | 
------------- 

2)創建這勢必completely different itemsource這樣的項目列表框中模板:

------------- 
|   | 
| DATA HERE | 
------------- 

3)在第二個後面繪製第一個列表框。

如果有相同數量的項目(這是你的情況,據我所知),你會達到你想要的視覺效果。 希望它有幫助。

編輯
此方法不符合您現在的模板,但它是一個解決方案的變體。

+0

如果您正在使用此路線,您還需要擔心樣式化列表框,以便覆蓋層不明顯,並且同步選擇,以便選擇第一個列表框中的項目將清除第二。如果你想要鍵盤輔助功能,你需要一些奇特的邏輯...... – 2010-01-18 17:01:27

+0

是的,當然,尼古拉斯·阿姆斯特朗是正確的,但它並不像看起來那麼複雜。 – levanovd 2010-01-18 17:54:17

+0

鍵盤功能根本不是問題,但是我看到這很困難。我從來沒有想到,我應該開始編輯我的初始設計,以使事情更輕鬆。 – MoominTroll 2010-01-19 10:09:52

相關問題