/// <summary>
/// 向Combobox加载要素图层名集合。
/// </summary>
public ICommand LoadFeatureLayerNamesCommand { get; set; }
private void LoadFeatureLayerNames()
{
featureLayerNames.Clear();
var layers = MapView.Active.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>();
foreach (var layer in layers)
{
var layerName = layer.Name;
featureLayerNames.Add(layerName);
}
OnPropertyChanged(nameof(FeatureLayerNames));
}
/// <summary>
/// 向Combobox加载选中图层的文本型字段名集合。
/// </summary>
public ICommand LoadFieldNamesCommand { get; set; }
private async void LoadFieldNames()
{
fieldNames.Clear();
//IReadOnlyList<ArcGIS.Core.Data.Field> fields = null;
IReadOnlyList<FieldDescription> fields =
await QueuedTask.Run(() =>
{
var layers = MapView.Active.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>();
if (selectedFeatureLayerIndex != -1)
{
FeatureLayer featureLayer = layers.ToList()[selectedFeatureLayerIndex];
return featureLayer.GetFieldDescriptions().Where(f => f.Type == FieldType.String).ToList();
//var table = featureLayer.GetTable();
//fields = table.GetDefinition().GetFields().Where(f=>f.FieldType==FieldType.String).ToList();
}
else
return null;
});
if (fields != null)
{
foreach (var field in fields)
{
var fieldName = field.Name;
fieldNames.Add(fieldName);
}
OnPropertyChanged(nameof(FieldNames));
}
}