UWP IsNullOrEmptyStateTrigger no funciona para ListView.
El XAML a continuación es para una aplicación UWP que utiliza un VisualStateManager con un IsNullOrEmptyStateTrigger
del paquete Microsoft.Toolkit.Uwp.UI. El disparador debería desactivar el botón cuando no se seleccionen elementos de la ListView. Sin embargo, el botón siempre permanece habilitado.
El SelectedItem
de la ListView debería ser nulo cuando no se selecciona nada en la lista (cuando ejecutas la aplicación por primera vez). ¿Alguna idea?
Mi código se basa en gran medida en este ejemplo.
<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}">=""></page><stackpanel>
<visualstatemanager.visualstategroups>
<visualstategroup x:name=""ListViewStates"">
<visualstate x:name=""ListSomethingSelectedState""></visualstate>
<visualstate x:name=""ListNothingSelectedState"">
<visualstate.statetriggers>
<triggers:isnulloremptystatetrigger value=""{Binding" selecteditem,="" elementname="myListView," mode="OneWay}"/">
</triggers:isnulloremptystatetrigger></visualstate.statetriggers>
<visualstate.setters>
<setter target=""myButton.IsEnabled"" value=""False""></setter>
</visualstate.setters>
</visualstate>
</visualstategroup>
</visualstatemanager.visualstategroups>
<listview x:name=""myListView"">
<textblock text=""Item" 1"=""></textblock>
<textblock text=""Item" 2"=""></textblock>
<textblock text=""Item" 3"=""></textblock>
</listview>
<button x:name=""myButton"" content=""Click" me"=""></button>
</stackpanel>
davy.ai
El problema con este código XAML es que la propiedad
Value
delIsNullOrEmptyStateTrigger
no está correctamente enlazada con la propiedadSelectedItem
delListView
. Para solucionar esto, se debe actualizar el enlace para establecer explícitamente la propiedadTargetNullValue
entrue
, lo que indica que un valor nulo debe ser tratado como verdadero para esta función del disparador. El código XAML actualizado debería verse así:Con esta actualización, el
IsNullOrEmptyStateTrigger
debería deshabilitar correctamentemyButton
cuando no hay elementos seleccionados en elmyListView
.