Search code examples
xamluwpvisual-studio-2017

Conditional XAML causes XBF generator error


I am trying to set the Icon property of MenuFlyoutItem on the UWP. As this is only available in contract version 4, I wanted to use conditional XAML statements in form of the IsApiContractPresent statement. Doing this, I came up with this code:

 <MenuFlyout>
     <MenuFlyoutItem Text="Open">
          <contract4Present:MenuFlyoutItem.Icon>
              <FontIcon Glyph="&#xE1A5;"/>                                
          </contract4Present:MenuFlyoutItem.Icon>
     </MenuFlyoutItem>
</MenuFlyout>

and added this line in the definition of my page:

xmlns:contract4Present="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract,5)"

Sadly, Visual Studio is now not able to compile the project anymore, with this error message:

The XAML Binary Format (XBF) generator reported syntax error '0x09C4' : Property Not Found

Strangely, the same errors comes up, when I use the minimal example given in the documentation

<TextBlock contract5NotPresent:Text="Hello, World"
       contract5Present:Text="Hello, Fall Creators Update"/>

How can I solve this error? Or is this even a bug of Visual Studio?


Solution

  • Apparently, this functions is only available for Minimum Build versions > 15063. Otherwise, you must use version adaptive code, and not XAML.