How do you get values for your CollectionViewSource? I understand it is bound to only one attribute value but is it from a GraphicCollection? You may also need to update your Binding statement for ListBox.ItemsSource to since you are pointing to a resource ItemsSource="{Binding Source={StaticResource cvs}}" To demonstrate how you can filter using CollectionViewSource, I updated this SDK sample: http://help.arcgis.com/en/webapi/silverlight/samples/start.htm#QueryWithoutMap XAML-code changes: DataGrid.ItemsSource is set through binding to CollectionViewSource <Grid.Resources> <CollectionViewSource x:Key="MyCollectionViewSource"/> </Grid.Resources> <slData:DataGrid x:Name="QueryDetailsDataGrid" AutoGenerateColumns="False" HeadersVisibility="Column" Background="White" IsReadOnly="True" Canvas.Left="10" Canvas.Top="50" Height="140" Width="530" HorizontalScrollBarVisibility="Hidden" ItemsSource="{Binding Source={StaticResource MyCollectionViewSource}}" > Code-behind changes: Query once and update cvs.Source on Button.Click. public MainPage() { InitializeComponent(); cvs = LayoutRoot.Resources["MyCollectionViewSource"] as CollectionViewSource; QueryTask queryTask = new QueryTask("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/5"); queryTask.ExecuteCompleted += QueryTask_ExecuteCompleted; queryTask.Failed += QueryTask_Failed; ESRI.ArcGIS.Client.Tasks.Query query = new ESRI.ArcGIS.Client.Tasks.Query(); query.Where = "1=1"; query.OutFields.Add("*"); queryTask.ExecuteAsync(query); } CollectionViewSource cvs; void QueryButton_Click(object sender, RoutedEventArgs e) { cvs.View.Filter = g => { var graphic = g as Graphic; if ((graphic.Attributes["STATE_NAME"] as string).ToLower().StartsWith(StateNameTextBox.Text.Trim().ToLower())) return true; return false; }; } void QueryTask_ExecuteCompleted(object sender, ESRI.ArcGIS.Client.Tasks.QueryEventArgs args) { FeatureSet featureSet = args.FeatureSet; if (featureSet != null && featureSet.Features.Count > 0) cvs.Source = featureSet.Features; else MessageBox.Show("No features returned from query"); }
ItemsSource="{Binding Source={StaticResource cvs}}"
<Grid.Resources> <CollectionViewSource x:Key="MyCollectionViewSource"/> </Grid.Resources> <slData:DataGrid x:Name="QueryDetailsDataGrid" AutoGenerateColumns="False" HeadersVisibility="Column" Background="White" IsReadOnly="True" Canvas.Left="10" Canvas.Top="50" Height="140" Width="530" HorizontalScrollBarVisibility="Hidden" ItemsSource="{Binding Source={StaticResource MyCollectionViewSource}}" >
public MainPage() { InitializeComponent(); cvs = LayoutRoot.Resources["MyCollectionViewSource"] as CollectionViewSource; QueryTask queryTask = new QueryTask("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/5"); queryTask.ExecuteCompleted += QueryTask_ExecuteCompleted; queryTask.Failed += QueryTask_Failed; ESRI.ArcGIS.Client.Tasks.Query query = new ESRI.ArcGIS.Client.Tasks.Query(); query.Where = "1=1"; query.OutFields.Add("*"); queryTask.ExecuteAsync(query); } CollectionViewSource cvs; void QueryButton_Click(object sender, RoutedEventArgs e) { cvs.View.Filter = g => { var graphic = g as Graphic; if ((graphic.Attributes["STATE_NAME"] as string).ToLower().StartsWith(StateNameTextBox.Text.Trim().ToLower())) return true; return false; }; } void QueryTask_ExecuteCompleted(object sender, ESRI.ArcGIS.Client.Tasks.QueryEventArgs args) { FeatureSet featureSet = args.FeatureSet; if (featureSet != null && featureSet.Features.Count > 0) cvs.Source = featureSet.Features; else MessageBox.Show("No features returned from query"); }
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.