xamarin/Xamarin.Forms

Using multiple ToolbarItem or MenuItem instances disables compiled bindings

Open

#5,762 opened on Mar 30, 2019

 (2 comments) (0 reactions) (0 assignees)C# (1,926 forks)batch import
a/binding ⛓a/listviewe/4 :clock4:help wantedinactivet/bug :bug:up-for-grabs

Repository metrics

Stars
 (5,644 stars)
PR merge metrics
 (No merged PRs in 30d)

Description

Description

Using multiple ToolbarItem or MenuItem instances disables compiled bindings.

The following code compiles, as it should:

                <ListView.ItemTemplate>
                    <DataTemplate x:DataType="local:MainPageDataValue">
                        <TextCell Text="{Binding Value}">
                            <TextCell.ContextActions>
                                <MenuItem Text="{Binding ValueMenuItem}" />
                            </TextCell.ContextActions>
                        </TextCell>
                    </DataTemplate>
                </ListView.ItemTemplate>

The following code triggers a compiler error, as it should:

                <ListView.ItemTemplate>
                    <DataTemplate x:DataType="local:MainPageDataValue">
                        <TextCell Text="{Binding Value}">
                            <TextCell.ContextActions>
                                <MenuItem Text="{Binding ValueMenuItemBUGBUG}" />
                            </TextCell.ContextActions>
                        </TextCell>
                    </DataTemplate>
                </ListView.ItemTemplate>

However, the following code also compiles, because the XAML compiler isn't used when there are multiple MenuItem instances:

                <ListView.ItemTemplate>
                    <DataTemplate x:DataType="local:MainPageDataValue">
                        <TextCell Text="{Binding Value}">
                            <TextCell.ContextActions>
                                <MenuItem Text="{Binding ValueMenuItemBUGBUG}" />
                                <MenuItem Text="TEXT" /> <!-- Remove this and see a compile error -->
                            </TextCell.ContextActions>
                        </TextCell>
                    </DataTemplate>
                </ListView.ItemTemplate>

Steps to Reproduce

In a page with compiled bindings, add multiple ToolbarItem or MenuItem instances.

Expected Behavior

Compiled bindings are enabled. Bindings to non-existent properties will fail at compile time.

Actual Behavior

Compiled bindings are disabled.

Basic Information

  • Version with issue:
  • Last known good version:
  • IDE: VS 2017
  • Platform Target Frameworks:
    • Android: 8.1

Reproduction Link

XamarinFormsSample.zip

Contributor guide