• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

gisoracle

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

How to access or set Text Symbol from Table Frame using ArcGIS Pro SDK

internal class Button1 : Button {
  protected override void OnClick() {
     var layout = LayoutView.Active.Layout;
     if (layout == null)
       return;

     QueuedTask.Run(() => {
      var tableFrame = layout.GetElements().OfType<TableFrame>().FirstOrDefault();
      if (tableFrame != null) {
        //change the text symbol
        //the property panel conflates the symbols for each field
        var frame_def = tableFrame.GetDefinition() as CIMTableFrame;
        var fields = frame_def.Fields?.ToList() ?? new List<CIMTableFrameField>();

        var green = ColorFactory.Instance.CreateColor(
                       System.Windows.Media.Colors.ForestGreen);
        var size = 11;
        var fontName = "Bernard MT Condensed";
        var textSymbol = SymbolFactory.Instance.ConstructTextSymbol(green, size, fontName);                            

        foreach (var frameField in fields) {
          //to mimic the property sheet, change heading and field symbols
      frameField.HeadingTextSymbol.Symbol = textSymbol;
          frameField.TextSymbol.Symbol = textSymbol;
        }
        //these are defaults for new fields - optional - but, based on
        //some experimentation, they need to match if u want the property
        //sheet to show the changed symbology.
        frame_def.DefaultTableFrameField.HeadingTextSymbol.Symbol = textSymbol;                 
        frame_def.DefaultTableFrameField.TextSymbol.Symbol = textSymbol;

        //commit the changes
        tableFrame.SetDefinition(frame_def);
       }
     });
   }
}

 

posted on 2022-04-24 22:39  gisai  阅读(38)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3