IEnumerable을 ItemsControl에 바인딩하고 싶습니다. 여기에 작동 XAML의 코드입니다 :코드 숨김 내 바인딩
<ItemsControl Name="SearchItemsControl" ItemsSource="{Binding Path=SearchResult}" ScrollViewer.CanContentScroll="True" BorderThickness="0" Background="{StaticResource PopUpContentGradientBrush}" VirtualizingStackPanel.IsVirtualizing="True" >
내가 코드 숨김에서하고 싶지는,이 내 코드입니다 :
SearchItemsControl.SetBinding(ItemsControl.ItemsSourceProperty, binding);
:
Binding binding = new Binding("SearchResult");
binding.Source = SearchResult;
그리고 발송자의 BeginInvoke에서
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')
:
는 여기에 내가 VS의 Otput 탭에서 얻을 오류입니다
SearchResult는 내 View-Model에서 IEnumerable 유형의 속성입니다. XAML의 컨트롤 이름은 SearchItemsControl입니다.
이 코드가 작동하지 않는 이유는 무엇입니까?
여기 재산입니다 :
private IEnumerable<SearchResultModel> _searchResult;
public IEnumerable<SearchResultModel> SearchResult
{
get { return _searchResult; }
set
{
_searchResult = value;
OnPropertyChanged("SearchResult");
}
}
첫째,의 SearchResult는 ObservableCollection에했다,하지만 같은 오류가 나타나 나는 IEnumaberable로 변경되었습니다.
첫째로, 당신은 몇 가지 소스가 더 표시해야합니다 당신은 XAML에서와 마찬가지로 동일하지 않은 것입니다. 그런 다음 Linq 쿼리 (관찰 할 수 없음)에 바인딩하려고 시도했을 것입니다. 마지막으로, 위의 바인딩에 의심스러워 보입니다 : SearchResult라는 인스턴스와 해당 속성입니까? –
@MarioVernari 일부 코드를 추가했습니다. 확인하십시오. 이미 작동하는 xaml을 보여주기 때문에 더하기 코드가 필요하지 않습니다. 난 그냥 C# 이에 상응하는 필요합니다. –
"binding.Source"에 대한 자세한 내용은 SearchResult를 참조하십시오. 그게 틀림 없습니까? 제거하거나 XAML에 사용 된 올바른 소스가 무엇인지 확인하십시오. –