我在自定义WF4活动上有一组对象,用户可以在设计器中编辑这些对象。我正在使用DialogPropertyValueEditor从PropertyGrid弹出一个编辑器对话框,可以在集合中添加\ edit \ remove项目。
在DialogPropertyValueEditor的构造函数中,我将InlineEditorTemplate设置为一个简单的DataTemplate,其中包含一个显示当前集合中项目数的TextBlock。
public class DataSourceFieldMappingsPropertyEditor : DialogPropertyValueEditor
{
public DataSourceFieldMappingsPropertyEditor()
{
base.InlineEditorTemplate = EditorDataTemplatesResources.GetGenericListDialogDataTemplate();
}
public override void ShowDialog(PropertyValue propertyValue, System.Windows.IInputElement commandSource)
{
//display dialog
}
}
DataTemplate如下所示:
<DataTemplate x:Key="editorDataTemplatesGenericListDialog">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
Text="{Binding Path=Value,
Converter={StaticResource ResourceKey=GenericListConverter}, Mode=OneWay, pdateSourceTrigger=PropertyChanged}" />
<sapp:EditModeSwitchButton Grid.Column="1" TargetEditMode="Dialog" />
</Grid>
GenericListConverter只是查看集合并显示“0 Items”,“5 Items”等。
我的问题是:当底层集合发生变化时,如何让InlineEditorTemplate自动更新。 InlineEditorTemplate的DataContext是PropertyValue,但不知何故绑定不会挂钩到PropertyChanged事件。
我必须单击设计器中的活动并返回它以查看更新的计数显示。