6

He creado un comportamiento adjunto que se utiliza para ejecutar un delegado de tipo Func<bool> cuando se invoca el comportamiento. A continuación se muestra la definición de propiedad dependiente.DependencyProperty of Type Delegate

public static readonly DependencyProperty SendToDetailBehaviorProperty = DependencyProperty.RegisterAttached("SendToDetailBehavior", typeof(Func<bool>), typeof(ListDetailAspectSendToDetailBehavior), new UIPropertyMetadata(null, SendToDetail)); 

tengo que funcione como se espera, sin embargo en mi XAML me sale el siguiente error, evitando que el diseñador de la carga.

Propiedad 'SendToDetailBehavior' se no encontrado o no es serializable para tipo 'SortableListView'

A continuación encontrará el XAML.

<Controls:SortableListView Grid.Row="0" 
                 Grid.Column="0" 
                 Name="lvwLocations" 
                 MinHeight="150" 
                 MinWidth="{Binding Path=BusinessObject.Locations, ValidatesOnDataErrors=true, Converter={StaticResource AlwaysReturn1Converter}, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" 
                 Style="{DynamicResource SortableListViewStyle}" 
                 ScrollViewer.VerticalScrollBarVisibility="Auto" 
                 ScrollViewer.HorizontalScrollBarVisibility="Auto" 
                 IsSynchronizedWithCurrentItem="True" 
                 **behaviors:ListDetailAspectSendToDetailBehavior.SendToDetailBehavior="{Binding Path=LocationListDetail.SendFocusToDetail}"** 
                 ItemsSource="{Binding Path=LocationListDetail.MasterList}" 
                 SelectedItem="{Binding Path=LocationListDetail.DetailItem, Mode=TwoWay}" 
                 MouseDoubleClick="lvwLocations_MouseDoubleClick"> 

Si cambio el tipo subyacente de la Propiedad Dependencia a un bool por ejemplo, el error desaparece.

Como dije, el comportamiento adjunto funciona, solo el diseñador explota. He buscado documentación sobre esto y he salido vacío. Espero que alguien aquí tenga alguna idea.

Gracias, BDN

Respuesta

0

¿Esto está ocurriendo en VS 2008, 2010, o Expression Blend? El diseñador VS2008 es notoriamente frágil. En cuanto a solucionarlo, ¿ha intentado utilizar un tipo de delegado no genérico? Algo así:

public delegate bool SendToDetail(); 

Y entonces su VM expondrían a una propiedad de ese tipo de delegado en lugar de Func<bool>.

+0

No me he cansado de eso. Esa es una buena sugerencia de que lo probaré por la mañana. Es VS2008 tristemente. –

4

En lugar de usar delegado, cambie su tipo de propiedad de dependencia a Comando (he usado DelegateCommand) que envolverá al delegado dentro de él. Estaba teniendo el mismo problema que el tuyo, pero se resolvió con este método.