6

Ho creato un comportamento collegato che viene utilizzato per eseguire un delegato di tipo Func<bool> quando viene richiamato il comportamento. Di seguito è riportata la definizione della proprietà di dipendenza.DependencyProperty of Type Delegate

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

Ho funzionato come previsto tuttavia nel mio XAML ottengo il seguente errore, impedendo il caricamento del progettista.

Proprietà 'SendToDetailBehavior' stato non trovato o non è serializzabile per tipo 'SortableListView'

Qui di seguito troverete il codice 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"> 

Se cambio il tipo di fondo della Dipendenza proprietà ad un bool per esempio, l'errore va via.

Come ho detto che il comportamento allegato funziona, solo il progettista esplode. Ho cercato la documentazione su questo e sono venuto fuori vuoto. Spero che qualcuno qui abbia qualche intuizione.

Grazie, BDN

risposta

0

sta succedendo in VS 2008, 2010, o Expression Blend? Il designer VS2008 è notoriamente fragile. Per quanto riguarda il suo fissaggio, hai provato a utilizzare un tipo di delegato non generico? Qualcosa in questo modo:

public delegate bool SendToDetail(); 

E poi il tuo VM avrebbero esporre una proprietà di quel tipo delegato al posto di Func<bool>.

+0

Non mi sono stancato. Questo è un buon suggerimento, ci proveremo al mattino. È VS2008 purtroppo. –

4

Invece di utilizzare delegato, modificare il tipo di proprietà di dipendenza in Comando (ho utilizzato il DelegateCommand) che avvolgerà il delegato al suo interno. Stavo avendo lo stesso problema del tuo, ma è stato risolto con questo metodo.