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"); }
Přihlášení členové mohou přispívat, sledovat aktualizace a další. Jste tu noví? Zaregistrujte si bezplatný účet.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.