Hello, is there any way to change an icon on the ribbon at runtime? For example, if a state or condition changes, can i also change the picture that shows up on the ribbon?
Hi,
For Button or MapTool you can override OnUpdate method:
protected override void OnUpdate() { if (myCondition) { Caption = "Title1"; SmallImage = BuildImage("small_image1.png"); LargeImage = BuildImage("large_image1.png"); } else { Caption = "Title2"; SmallImage = BuildImage("small_image2.png"); LargeImage = BuildImage("large_image2.png"); } }
Or set from code:
private void ChangeCaptionImage() { IPlugInWrapper wrapper = FrameworkApplication.GetPlugInWrapper("MyAddin_MyCustomButton"); if (wrapper != null) { wrapper.Caption = "new caption"; // ensure that T-Rex16 and T-Rex32 are included in your add-in under the images folder and have // BuildAction = Resource and Copy to OutputDirectory = Do not copy wrapper.SmallImage = BuildImage("T-Rex16.png"); wrapper.LargeImage = BuildImage("T-Rex32.png"); } } private ImageSource BuildImage(string imageName) { return new BitmapImage(PackUriForResource(imageName)); } private Uri PackUriForResource(string resourceName) { string asm = System.IO.Path.GetFileNameWithoutExtension( System.Reflection.Assembly.GetExecutingAssembly().Location); return new Uri(string.Format("pack://application:,,,/{0};component/Images/{1}", asm, resourceName), UriKind.Absolute); }
サインインしたメンバーは投稿、更新のフォローなどができます。初めてですか?無料アカウントを登録してください。
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.