xamarin/Xamarin.Forms

Using multiple ToolbarItem or MenuItem instances disables compiled bindings

Aperta

#5762 aperta il 30 mar 2019

 (2 commenti) (0 reazioni) (0 assegnatari)C# (1926 fork)batch import
a/binding ⛓a/listviewe/4 :clock4:help wantedinactivet/bug :bug:up-for-grabs

Metriche repository

Star
 (5644 stelle)
Metriche merge PR
 (Nessuna PR mergiata in 30 g)

Descrizione

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

Guida contributor