我想將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。
首先,你應該表現出一定的源更多。然後,可能你試圖綁定到一個Linq查詢(這是不可觀察的)。最後,它看起來可疑的綁定上面:是你的實例名爲SearchResult以及它的屬性? – 2014-08-29 07:21:08
@MarioVernari我添加了一些代碼,請檢查。不需要加代碼,因爲我顯示了已經工作的xaml。我只需要C#等價物。 – 2014-08-29 07:29:39
我會問你更多關於設置爲SearchResult的「binding.Source」。你確定這是正確的嗎?嘗試刪除它,或檢查XAML中使用的正確源。 – 2014-08-29 07:38:24