<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Custom button OnUpdate logic does not get executed when using DelegateCommands Model in ArcGIS Pro SDK Questions</title>
    <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/custom-button-onupdate-logic-does-not-get-executed/m-p/861372#M4764</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I’m trying to test implementation of custom button which uses DelegateCommands Model as described in the following wiki page:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://github.com/Esri/arcgis-pro-sdk/wiki/ProGuide-Buttons#use-a-static-module-method-as-a-button-class-definition" rel="nofollow noopener noreferrer" target="_blank"&gt;ProGuide Buttons: Use a static module method as a button class definition&lt;/A&gt;​&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am able to execute the referenced static method on my module, but cannot execute the OnUpdate logic support via the naming convention.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In my Daml:&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&amp;lt;modules&amp;gt;
&amp;nbsp; &amp;lt;insertModule id="MyAddIn_Module" className="MainModule" autoLoad="false" caption="Module1"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tabs&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tab id="MyTab" caption="My Tab"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;group refID="MyGroup" /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tab&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tabs&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;groups&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;group id="MyGroup" caption="My Group" appearsOnAddInTab="true"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;button refID="MyCustomButton" size="large" /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/group&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/groups&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;controls&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;button id="MyCustomButton" caption="My Custom Button" className="MyAddIn_Module:OnMyCustomButtonClick" loadOnClick="true" condition="esri_mapping_onlyFeatureLayersSelectedCondition" smallImage="Images\GenericButtonBlue16.png" largeImage="Images\GenericButtonBlue32.png"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tooltip heading="Tooltip Heading"&amp;gt;Tooltip text&amp;lt;disabledText /&amp;gt;&amp;lt;/tooltip&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/button&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/controls&amp;gt;
&amp;nbsp; &amp;lt;/insertModule&amp;gt;
&amp;lt;/modules&amp;gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In my MainModule.cs:&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;namespace MyAddIn
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; internal class MainModule : Module
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static MainModule _this = null;


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ....


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; internal static async Task OnMyCustomButtonClick()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; await QueuedTask.Run(() =&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Diagnostics.Debug.WriteLine("OnClick called");
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; internal static async Task CanOnMyCustomButtonClick()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; await QueuedTask.Run(() =&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Diagnostics.Debug.WriteLine("OnUpdate called");
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }


&amp;nbsp;&amp;nbsp;&amp;nbsp; }
}&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the code above, CanOnMyCustomButtonClick method does not get executed. I’m assuming that OnUpdate logic support via the naming convention is equivalent of overriding OnUpdate() of Button base class. Do I need an additional step to make the CanOnMyCustomButtonClick method to be get executed?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Note: If I explicitly create MyCustomButton and referece it from DAML (className="MyCustomButton"), the OnUpdate method is executed automatically.&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;internal class MyCustomButton : Button
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; protected override void OnClick()
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Diagnostics.Debug.WriteLine("OnClick called");
&amp;nbsp;&amp;nbsp;&amp;nbsp; }


&amp;nbsp;&amp;nbsp;&amp;nbsp; protected override void OnUpdate()
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; base.OnUpdate();


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Diagnostics.Debug.WriteLine("OnUpdate called");
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
}&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sun, 12 Dec 2021 10:40:47 GMT</pubDate>
    <dc:creator>Anonymous User</dc:creator>
    <dc:date>2021-12-12T10:40:47Z</dc:date>
    <item>
      <title>Custom button OnUpdate logic does not get executed when using DelegateCommands Model</title>
      <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/custom-button-onupdate-logic-does-not-get-executed/m-p/861372#M4764</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I’m trying to test implementation of custom button which uses DelegateCommands Model as described in the following wiki page:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://github.com/Esri/arcgis-pro-sdk/wiki/ProGuide-Buttons#use-a-static-module-method-as-a-button-class-definition" rel="nofollow noopener noreferrer" target="_blank"&gt;ProGuide Buttons: Use a static module method as a button class definition&lt;/A&gt;​&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am able to execute the referenced static method on my module, but cannot execute the OnUpdate logic support via the naming convention.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In my Daml:&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&amp;lt;modules&amp;gt;
&amp;nbsp; &amp;lt;insertModule id="MyAddIn_Module" className="MainModule" autoLoad="false" caption="Module1"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tabs&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tab id="MyTab" caption="My Tab"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;group refID="MyGroup" /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tab&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tabs&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;groups&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;group id="MyGroup" caption="My Group" appearsOnAddInTab="true"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;button refID="MyCustomButton" size="large" /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/group&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/groups&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;controls&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;button id="MyCustomButton" caption="My Custom Button" className="MyAddIn_Module:OnMyCustomButtonClick" loadOnClick="true" condition="esri_mapping_onlyFeatureLayersSelectedCondition" smallImage="Images\GenericButtonBlue16.png" largeImage="Images\GenericButtonBlue32.png"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tooltip heading="Tooltip Heading"&amp;gt;Tooltip text&amp;lt;disabledText /&amp;gt;&amp;lt;/tooltip&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/button&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/controls&amp;gt;
&amp;nbsp; &amp;lt;/insertModule&amp;gt;
&amp;lt;/modules&amp;gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In my MainModule.cs:&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;namespace MyAddIn
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; internal class MainModule : Module
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static MainModule _this = null;


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ....


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; internal static async Task OnMyCustomButtonClick()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; await QueuedTask.Run(() =&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Diagnostics.Debug.WriteLine("OnClick called");
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; internal static async Task CanOnMyCustomButtonClick()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; await QueuedTask.Run(() =&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Diagnostics.Debug.WriteLine("OnUpdate called");
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }


&amp;nbsp;&amp;nbsp;&amp;nbsp; }
}&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the code above, CanOnMyCustomButtonClick method does not get executed. I’m assuming that OnUpdate logic support via the naming convention is equivalent of overriding OnUpdate() of Button base class. Do I need an additional step to make the CanOnMyCustomButtonClick method to be get executed?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Note: If I explicitly create MyCustomButton and referece it from DAML (className="MyCustomButton"), the OnUpdate method is executed automatically.&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;internal class MyCustomButton : Button
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; protected override void OnClick()
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Diagnostics.Debug.WriteLine("OnClick called");
&amp;nbsp;&amp;nbsp;&amp;nbsp; }


&amp;nbsp;&amp;nbsp;&amp;nbsp; protected override void OnUpdate()
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; base.OnUpdate();


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Diagnostics.Debug.WriteLine("OnUpdate called");
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
}&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 10:40:47 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-sdk-questions/custom-button-onupdate-logic-does-not-get-executed/m-p/861372#M4764</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2021-12-12T10:40:47Z</dc:date>
    </item>
    <item>
      <title>Re: Custom button OnUpdate logic does not get executed when using DelegateCommands Model</title>
      <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/custom-button-onupdate-logic-does-not-get-executed/m-p/861373#M4765</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You have a condition on the button declaration that takes precedence and is redundant if you would like to use the Command pattern. The CanOnMyCustomButtonClick in your example will take the role of the condition.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please take a look at this example&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=https%3A%2F%2Fgithub.com%2FEsri%2Farcgis-pro-sdk-community-samples%2Ftree%2Fmaster%2FMap-Exploration%2FFeatureSelection%2FFeatureSelection" rel="nofollow" target="_blank"&gt;https://github.com/Esri/arcgis-pro-sdk-community-samples/tree/master/Map-Exploration/FeatureSelection/FeatureSelection&lt;/A&gt;&lt;SPAN&gt; on the syntax and usage.&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 15 Dec 2015 20:42:22 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-sdk-questions/custom-button-onupdate-logic-does-not-get-executed/m-p/861373#M4765</guid>
      <dc:creator>ThomasEmge</dc:creator>
      <dc:date>2015-12-15T20:42:22Z</dc:date>
    </item>
    <item>
      <title>Re: Custom button OnUpdate logic does not get executed when using DelegateCommands Model</title>
      <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/custom-button-onupdate-logic-does-not-get-executed/m-p/861374#M4766</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Shohei,&lt;/P&gt;&lt;P&gt;So let me also provide some guidance.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;First: the documentation you reference is not clear on use of DelegateCommands and we need to do a better job of explaining them and we will do that for 1.2.&lt;/P&gt;&lt;P&gt;Second: the DelegateCommand update must be a property, not a method. It must be a &lt;SPAN style="text-decoration: underline;"&gt;&lt;STRONG&gt;property&lt;/STRONG&gt;&lt;/SPAN&gt; that &lt;SPAN style="text-decoration: underline;"&gt;&lt;STRONG&gt;returns bool&lt;/STRONG&gt;&lt;/SPAN&gt;. You can actually see that in the Module1.cs class file that Thomas points out in the sample in his reply. This is a subtlety that is not clearly documented.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So, to get your code working please try this implementation:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: calibri, verdana, arial, sans-serif;"&gt;internal static void OnMyCustomButtonClick() {&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: calibri, verdana, arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Diagnostics.Debug.WriteLine("OnClick called");&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: calibri, verdana, arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: calibri, verdana, arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; internal static bool CanOnMyCustomButtonClick {&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: calibri, verdana, arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get {&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: calibri, verdana, arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Diagnostics.Debug.WriteLine("OnUpdate called");&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: calibri, verdana, arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: calibri, verdana, arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: calibri, verdana, arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif;"&gt;Notice that CanOnMyCustomButtonClick is a bool property.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif;"&gt;Also, I have not used QueuedTask as this is not really necessary and would be inefficient in the Update property given the frequency with which it is called but I get it that you were probably just experimenting with different API characteristics and what-not in your code.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif;"&gt;Last, to a point Thomas raises with regards to conditions and also an Update implementation. Use of the condition in daml is much more efficient than coding update logic (whether via an OnUpdate override or a "Can..." update property. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif;"&gt;However, if you do have &lt;STRONG&gt;both&lt;/STRONG&gt;, the condition in daml &lt;EM&gt;&lt;STRONG&gt;and&lt;/STRONG&gt; &lt;/EM&gt;are updating your enabled state via Update code, then the Update code wins with one exception: The &lt;EM&gt;initial&lt;/EM&gt; enabled state of the button as shown on the ribbon.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif;"&gt;Before the button has been clicked, the Framework will use the condition in the daml to show its initial enabled state. Once the button has been clicked then the button state is controlled by its Update logic and the condition is ignored. You can observe this behavior with your implementation:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif;"&gt;Return false from your update property and keep your "esri_mapping_onlyFeatureLayersSelectedCondition" condition in the DAML. Before clicking the button, select and unselect a feature layer in the TOC. You should notice the button's enabled state toggling based on the condition true/false. Once you click the button it will always be disabled regardless of the condition. (Note also that your OnClick logic is never called....why?)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif;"&gt;This would be akin to coding this for an OnUpdate override:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: calibri, verdana, arial, sans-serif; font-size: 12pt;"&gt; protected override void OnUpdate() {&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: calibri, verdana, arial, sans-serif; font-size: 12pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Enabled = false;//disable the button the moment it is clicked.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: calibri, verdana, arial, sans-serif; font-size: 12pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 15 Dec 2015 21:27:05 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-sdk-questions/custom-button-onupdate-logic-does-not-get-executed/m-p/861374#M4766</guid>
      <dc:creator>CharlesMacleod</dc:creator>
      <dc:date>2015-12-15T21:27:05Z</dc:date>
    </item>
    <item>
      <title>Re: Custom button OnUpdate logic does not get executed when using DelegateCommands Model</title>
      <link>https://community.esri.com/t5/arcgis-pro-sdk-questions/custom-button-onupdate-logic-does-not-get-executed/m-p/861375#M4767</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Thomas and Charles,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you for your replies. Based on your answers, I understand the followings:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;To utilize the naming convention of DelegateCommands, Update must be property which returns bool.&lt;/LI&gt;&lt;LI&gt;Condition attribute and DelegateCommands Update are used for the same purpose and if both of them are present, Update will always win except to determine the initial state of the button.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;These are very useful information for me. I’ve fixed my code as below and get the Update to be executed. Thank you!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Config.daml&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&amp;lt;insertModule id="MyAddIn_Module" className="MainModule" autoLoad="false" caption="Module1"&amp;gt;
&amp;nbsp; &amp;lt;tabs&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tab id="MyTab" caption="My Tab"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;group refID="MyGroup" /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tab&amp;gt;
&amp;nbsp; &amp;lt;/tabs&amp;gt;
&amp;nbsp; &amp;lt;groups&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;group id="MyGroup" caption="My Group" appearsOnAddInTab="true"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;button refID="MyCustomButton" size="large" /&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/group&amp;gt;
&amp;nbsp; &amp;lt;/groups&amp;gt;
&amp;nbsp; &amp;lt;controls&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;button id="MyCustomButton" caption="My Custom Button" className="MyAddIn_Module:OnMyCustomButtonClick" loadOnClick="true" smallImage="Images\GenericButtonBlue16.png" largeImage="Images\GenericButtonBlue32.png"&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tooltip heading="Tooltip Heading"&amp;gt;Tooltip text&amp;lt;disabledText /&amp;gt;&amp;lt;/tooltip&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/button&amp;gt;
&amp;nbsp; &amp;lt;/controls&amp;gt;
&amp;lt;/insertModule&amp;gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MainModule.cs&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;internal static void OnMyCustomButtonClick()
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Diagnostics.Debug.WriteLine("OnClick called");
}


internal static bool CanOnMyCustomButtonClick
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; get
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Diagnostics.Debug.WriteLine("OnUpdate called");
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
}&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 10:40:49 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-pro-sdk-questions/custom-button-onupdate-logic-does-not-get-executed/m-p/861375#M4767</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2021-12-12T10:40:49Z</dc:date>
    </item>
  </channel>
</rss>

