2014-08-29 89 views
0

我想將IEnumerable綁定到ItemsControl。這裏是XAML的作品代碼:在代碼隱藏中綁定

<ItemsControl Name="SearchItemsControl" ItemsSource="{Binding Path=SearchResult}" ScrollViewer.CanContentScroll="True" BorderThickness="0" Background="{StaticResource PopUpContentGradientBrush}" VirtualizingStackPanel.IsVirtualizing="True" > 

我想從代碼隱藏做到這一點,這是我的代碼:

Binding binding = new Binding("SearchResult"); 
binding.Source = SearchResult; 

而在調度員的BeginInvoke的:

SearchItemsControl.SetBinding(ItemsControl.ItemsSourceProperty, binding); 

這是我在VS的Otput選項卡時出現錯誤:

System.Windows.Data Error: 40 : BindingExpression path error: 'SearchResult' property not found on 'object' ''WhereSelectEnumerableIterator`2' (HashCode=14814649)'. BindingExpression:Path=SearchResult; DataItem='WhereSelectEnumerableIterator`2' (HashCode=14814649); target element is 'ItemsControl' (Name=''); target property is 'ItemsSource' (type 'IEnumerable') 

SearchResult是我的View-Model中的一個屬性,它是IEnumerable類型的。 XAML中的控件名稱是SearchItemsControl。

爲什麼這段代碼不工作?

這裏的屬性:

private IEnumerable<SearchResultModel> _searchResult; 

public IEnumerable<SearchResultModel> SearchResult 
    { 
     get { return _searchResult; } 
     set 
     { 
      _searchResult = value; 
      OnPropertyChanged("SearchResult"); 
     } 
    } 

首先,信息搜索結果是的ObservableCollection,但出現了同樣的錯誤,我把它改成IEnumaberable。

+1

首先,你應該表現出一定的源更多。然後,可能你試圖綁定到一個Linq查詢(這是不可觀察的)。最後,它看起來可疑的綁定上面:是你的實例名爲SearchResult以及它的屬性? – 2014-08-29 07:21:08

+0

@MarioVernari我添加了一些代碼,請檢查。不需要加代碼,因爲我顯示了已經工作的xaml。我只需要C#等價物。 – 2014-08-29 07:29:39

+0

我會問你更多關於設置爲SearchResult的「binding.Source」。你確定這是正確的嗎?嘗試刪除它,或檢查XAML中使用的正確源。 – 2014-08-29 07:38:24

回答

1

你必須刪除

binding.Source = SearchResult; 

否則就意味着你的ItemsControl中得到一個新的「DataContext的」信息搜索結果,應該在的ItemsSource綁定到你的對象信息搜索結果的房產信息搜索結果。

編輯:下面的工作,但並不像你在XAML做同樣的

Binding binding = new Binding("."); 
binding.Source = SearchResult; 
+0

如果我刪除它,我不會在控制檯中發生錯誤,但是當項目控件加載時,我看不到其中的項目。它是空的。就像我不會將它綁定到任何東西一樣。 – 2014-08-29 07:58:35

+0

好事是當綁定不工作在wpf上時,那麼只有2個選項:第一:錯誤的DataContext第二個錯誤綁定表達式。只需使用Snoop(http://snoopwpf.codeplex.com/)來檢查您的datacontext並在運行時進行綁定。請張貼您的結果 – blindmeis 2014-08-29 08:18:49