He estado luchando con este código desde hace algún tiempo y no puedo encontrar ninguna respuesta completa a mi pregunta. He creado una pequeña muestra para ilustrar el problema:¿El atributo de enlace de condición no funciona?
<ListView >
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Margin="0,0,20,0" IsItemsHost="True" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.Items>
<TextBlock>Test1</TextBlock>
<TextBlock>Test2</TextBlock>
<TextBlock>Test3</TextBlock>
<TextBlock>Test4</TextBlock>
<TextBlock>Test5</TextBlock>
</ListView.Items>
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<Grid>
<ContentPresenter/>
</Grid>
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsMouseOver}" Value="True" />
<Condition Property="IsSelected" Value="True"/>
</MultiTrigger.Conditions>
<Setter Property="Visibility" Value="Collapsed"/>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
</ListView>
De acuerdo con la configuración MultiTrigger, el elemento seleccionado volverá a aparecer cuando el ratón no está sobre el elemento seleccionado. Sin embargo, este código produce una InvalidOperationException con el mensaje "Debe tener un valor no nulo para 'Property'". Si elimina la condición que utiliza el atributo "Enlace", la excepción no se produce. En la documentación de MSDN, indica que debe tener el atributo Propiedad o Enlace establecido. El código anterior funciona como el atributo de enlace no está configurado. De hecho, en todos mis casos de prueba, no importa en qué se establezca el atributo de enlace; la excepción todavía se arroja. ¿Alguna idea?
+1 Para admitir boneheadedness y dar una solución. Alguien más se encontrará con esto. Perder la palabra "Datos" es bastante fácil pasar por alto. –
+1 Por llevarme a la solución mucho más rápido que buscar y leer la documentación. El error debería haber explicado esto en lugar de confiar en la documentación. – jpierson
+1 Acabo de hacer el mismo movimiento tonto. Tu publicación probablemente me salvó una hora. –