使用模型构建器的过程中,因为模型中使用了行内变量,并且输出结果使用了添加至显示,结果在内容面板中自动添加上来的图层和独立表的名称都是带了 %行内变量% 的名称。移除之后从目录中重新添加会正常显示原始的名称,但是觉得点选之后添加比较麻烦,所以想到使用SDK构建按钮一键修复图层和独立表的显示名称。效果图如下
按钮核心代码
protected override void OnClick()
{
var mv = MapView.Active;
var lyrs = mv.Map.Layers;
var tables = mv.Map.StandaloneTables;
foreach (var lyr in lyrs)
{
if(lyr is FeatureLayer)
{
FeatureLayer featureLayer = lyr as FeatureLayer;
//RemoveLayers方法必须在QueuedTask.Run中运行
QueuedTask.Run(() =>
{
string featureLayerName = featureLayer.GetFeatureClass().GetName();
lyr.SetName(featureLayerName);
});
}
}
foreach (var table in tables)
{
QueuedTask.Run(() =>
{
string tableName = table.GetTable().GetName();
table.SetName(tableName);
});
}
}
DAML中需要添加的代码
<groups>
<group id="ProAppModule_Group1" caption="Group 1" appearsOnAddInTab="true" keytip="G1">
<button refID="ProAppModule_Button_RepairName" size="large" />
</group>
</groups>
<controls>
<button id="ProAppModule_Button_RepairName" caption="修复图层和表名称" className="Button_RepairName" loadOnClick="true" smallImage="pack://application:,,,/ArcGIS.Desktop.Resources;component/Images/GenericButtonBlue16.png" largeImage="pack://application:,,,/ArcGIS.Desktop.Resources;component/Images/GenericButtonBlue32.png">
<tooltip heading="Tooltip Heading">Tooltip text<disabledText /></tooltip>
</button>
</controls>