2011-02-24 73 views
0

我已經組裝了以下代碼以便在ListView中查找對象。我目前使用它來返回用戶選擇的ListViewRow上的文本框。在ListViewRow中查找對象

private T findObjectInListView<T>(ListView lv, object item, string objectName) 
    { 
     ListViewItem lvi = (ListViewItem)lv.ItemContainerGenerator.ContainerFromItem(item); 

     // Getting the ContentPresenter of myListBoxItem 
     ContentPresenter myContentPresenter = FindVisualChild<ContentPresenter>(lvi); 

     // Finding textBlock from the DataTemplate that is set on that ContentPresenter 
     DataTemplate myDataTemplate = myContentPresenter.ContentTemplate; 

     //Cast to chosen type and return 
     return (T)myDataTemplate.FindName(objectName, myContentPresenter); 
    } 

這工作完全在我的ListView只包含一個DataTemplate中,但只要我添加另一個失敗。我想這是因爲我看我沒有按名稱查找ContentPresenter,因此第一個只返回(在這種情況下不包含TextBox)。

有人可以指出我如何解決這個問題的正確方向;我是否認爲我需要按名稱搜索ContentPresenter?我找不到任何文章解決這個問題,所以我想我可能會在錯誤的軌道上...

在此先感謝您。編輯: 這是我正在使用的xaml。我的功能工作正常,當我刪除第一GridViewColumn:

<ListView Height="372" HorizontalAlignment="Left" Margin="12,12,0,0" Name="listView1" VerticalAlignment="Top" Width="516" MouseUp="listView1_MouseUp"> 
      <ListView.Resources> 
       <DataTemplate x:Key="Check"> 
        <StackPanel Orientation="Horizontal"> 
         <CheckBox></CheckBox> 
        </StackPanel> 
       </DataTemplate> 
       <DataTemplate x:Key="Quantity"> 
        <StackPanel Orientation="Horizontal"> 
         <TextBox Text="0" Width="30" Name="quantity Foreground="LightGray" /> 
        </StackPanel> 
       </DataTemplate> 
      </ListView.Resources> 
      <ListView.View> 
       <GridView> 
        <GridViewColumn Width="140" Header="Column1" CellTemplate="{StaticResource Check}" /> 
        <GridViewColumn Width="140" Header="Column2" CellTemplate="{StaticResource Quantity}" /> 
        <GridViewColumn Width="110" Header="Column3" DisplayMemberBinding="{Binding Name}" /> 
       </GridView> 
      </ListView.View> 
     </ListView> 

回答

3

我強烈建議,你執行你的綁定到ListView數據搜索!

+0

感謝您的回覆Daniel。請原諒我的無知,但可否詳細說明一下?我的文本框添加在xaml中,與綁定的數據無關。 – Jonathan 2011-02-24 13:28:29

+0

@Jon:我想你在文本框中顯示綁定的數據?如果沒有,也許你可以展示你的XAML。 – 2011-02-24 13:29:58

+0

不幸的是,文本框允許用戶輸入我將在以後處理的數量。我用xaml更新了我的原始帖子。再次感謝。 – Jonathan 2011-02-24 13:34:07