我在自定义 WF4 活动上有一组对象,用户可以在设计器中编辑这些对象。我正在使用 DialogPropertyValueEditor 从 PropertyGrid 中弹出一个编辑器对话框,该对话框可用于添加\编辑\删除集合中的项目。
在 DialogPropertyValueEditor 的构造函数中,我将 InlineEditorTemplate 设置为一个简单的 DataTemplate,其中包含一个 TextBlock,该 TextBlock 显示当前集合中的项目数。
public class DataSourceFieldMappingsPropertyEditor : DialogPropertyValueEditor
{
public DataSourceFieldMappingsPropertyEditor()
{
base.InlineEditorTemplate = EditorDataTemplatesResources.GetGenericListDialogDataTemplate();
}
public override void ShowDialog(PropertyValue propertyValue, System.Windows.IInputElement commandSource)
{
//display dialog
}
}
数据模板如下所示:
<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 项”、“5 项”等。
我的问题是:如何让 InlineEditorTemplate 在基础集合更改时自动更新。InlineEditorTemplate 的 DataContext 是 PropertyValue,但不知何故,该绑定没有挂钩到 PropertyChanged 事件。
我必须单击设计器中的活动并返回它以查看更新的计数显示。