我创建了一个附加行为,用于在调用行为时执行类型Func<bool>
的委托。以下是依赖属性定义。
public static readonly DependencyProperty SendToDetailBehaviorProperty = DependencyProperty.RegisterAttached("SendToDetailBehavior", typeof(Func<bool>), typeof(ListDetailAspectSendToDetailBehavior), new UIPropertyMetadata(null, SendToDetail));
我按预期工作,但是在我的XAML中,我收到以下错误,导致无法加载设计器。
属性'SendToDetailBehavior'是 找不到或不可序列化 输入'SortableListView'
您将在下面找到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">
例如,如果我将Dependancy属性的基础类型更改为bool
,则错误消失。
正如我所说的附加行为正在起作用,只有设计师才会爆炸。我已经找到了关于这方面的文档并且空洞了。我希望有人在这里有一些见解。
谢谢, BDN
答案 0 :(得分:4)
而不是使用委托,将您的依赖项属性类型更改为Command(我使用DelegateCommand),它将委托包装在其中。我遇到了与你相同的问题,但是通过这种方法解决了这个问题。
答案 1 :(得分:0)
这是在VS 2008,2010还是Expression Blend中发生的? VS2008的设计师非常脆弱。至于修复它,您是否尝试过使用非泛型委托类型?像这样:
public delegate bool SendToDetail();
然后您的VM将公开该委托类型的属性,而不是Func<bool>
。