C# 如何使InlineEditorTemplate的内容在其基础PropertyValue更新时更新
我有一个自定义WF4活动的对象集合,用户可以在设计器中编辑。我正在使用DialogPropertyValueEditor从PropertyGrid弹出一个编辑器对话框,可用于添加\编辑\删除集合中的项目C# 如何使InlineEditorTemplate的内容在其基础PropertyValue更新时更新,c#,wpf,workflow-foundation-4,C#,Wpf,Workflow Foundation 4,我有一个自定义WF4活动的对象集合,用户可以在设计器中编辑。我正在使用DialogPropertyValueEditor从PropertyGrid弹出一个编辑器对话框,可用于添加\编辑\删除集合中的项目 public class DataSourceFieldMappingsPropertyEditor : DialogPropertyValueEditor { public DataSourceFieldMappingsPropertyEditor() { base
public class DataSourceFieldMappingsPropertyEditor : DialogPropertyValueEditor
{
public DataSourceFieldMappingsPropertyEditor()
{
base.InlineEditorTemplate = EditorDataTemplatesResources.GetGenericListDialogDataTemplate();
}
public override void ShowDialog(PropertyValue propertyValue, System.Windows.IInputElement commandSource)
{
//display dialog
}
}
在DialogPropertyValueEditor的构造函数中,我将InlineEditorTemplate设置为一个简单的DataTemplate,该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 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事件
我必须在设计器中单击“活动”的一部分,然后返回以查看更新的计数显示。您知道ModelItem会包装您的活动、其所有属性以及除这些属性中的基本体之外的所有类型实例吗?它是提供属性更改通知的ModelItem吗?如果编辑器未绑定到ModelItem,则不会收到这些属性更改通知?通常情况下,人们并不理解所有这些,而是试图通过使用GetCurrentValue将实际实例包装到ModelItem中来绕过整个ModelItem。这可能会导致此问题和其他问题,例如MI和活动之间的同步问题。是的,我知道ModelItem是如何工作的,并且我已确保以正确的方式通过ModelItem对此集合进行所有更改。不知何故,InlineEditorTemplate中的Textblock没有检测到集合的更改并刷新自身。我甚至尝试使用ModelPropertyEntryToModelItemConverter将DataContext更改为th ModelItem并绑定到ModelItem.PropertyName,但它仍然没有拾取任何更改事件。。。。