Skip to content

IsNullOrEmptyStateTrigger not working for ListView #4411

Open
@fmccown

Description

@fmccown

Describe the bug

The XAML below is for a UWP app uses a VisualStateManager with an IsNullOrEmptyStateTrigger from the Microsoft.Toolkit.Uwp.UI package. The trigger is supposed to disable the button when no items are selected from the ListView. However, the button always remains enabled. The ListView's SelectedItem should be null when nothing in the list is selected (nothing is selected when you first run the app).

<Page
    x:Class="UwpTriggerDemo.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:UwpTriggerDemo"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:triggers="using:Microsoft.Toolkit.Uwp.UI.Triggers"    
    mc:Ignorable="d"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <StackPanel>
        <VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="ListViewStates">
                <VisualState x:Name="ListSomethingSelectedState" />
                <VisualState x:Name="ListNothingSelectedState">
                    <VisualState.StateTriggers>
                        <triggers:IsNullOrEmptyStateTrigger Value="{Binding SelectedItem, 
                            ElementName=myListView, Mode=OneWay}"/>
                    </VisualState.StateTriggers>
                    <VisualState.Setters>
                        <Setter Target="myButton.IsEnabled" Value="False" />
                    </VisualState.Setters>
                </VisualState>
            </VisualStateGroup>

        </VisualStateManager.VisualStateGroups>

        <ListView x:Name="myListView">
            <TextBlock Text="Item 1" />
            <TextBlock Text="Item 2" />
            <TextBlock Text="Item 3" />
        </ListView>
        <Button x:Name="myButton" Content="Click Me" />
    </StackPanel>
</Page>
  • Is this bug a regression in the toolkit? If so, what toolkit version did you last see it work:

Steps to Reproduce

  • Can this be reproduced in the Sample App? (Either in a sample as-is or with new XAML pasted in the editor.) If so, please provide custom XAML or steps to reproduce. If not, let us know why it can't be reproduced (e.g. more complex setup, environment, dependencies, etc...)

Steps to reproduce the behavior:

  1. Create a new Blank App (Universal Windows).
  2. Add the latest Microsoft.Toolkit.Uwp.UI package.
  3. Paste the XAML above into MainPage.xaml.
  4. Run the app and notice that no item is selected in the ListView, but the button is enabled.

Expected behavior

When you run the app, the IsNullOrEmptyStateTrigger should set myButton.IsEnabled = false until an item from the ListView is selected.

Screenshots

No screenshot is necessary.

Environment

NuGet Package(s):

Microsoft.Toolkit.Uwp.UI package (v7.1.2)

Package Version(s):

Windows 10 Build Number:

  • Fall Creators Update (16299)
  • April 2018 Update (17134)
  • October 2018 Update (17763)
  • May 2019 Update (18362)
  • May 2020 Update (19041)
  • Insider Build ({build_number})

App min and target version:

  • Fall Creators Update (16299)
  • April 2018 Update (17134)
  • October 2018 Update (17763)
  • May 2019 Update (18362)
  • May 2020 Update (19041)
  • Insider Build ({build_number})

Device form factor:

  • Desktop
  • Xbox
  • Surface Hub
  • IoT

Visual Studio version:

  • 2017 (15.{minor_version})
  • 2019 (16.8.3)
  • 2022 (17.{minor_version})

Additional context

N/A

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions