我正在重新托管我的设计师并添加了一个工具箱项,其中包含一个 WorkflowItemsPresenter 来呈现多个子活动项。所以我的模型项目有一个集合:
Sequence _innerSequence = new Sequence();
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
[Browsable(false)]
[Description("")]
public Collection<Activity> Activities { get { return _innerSequence.Activities; } }
并且绑定是
<sap:WorkflowItemsPresenter Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2" Items="{Binding Path=ModelItem.Activities}" VerticalAlignment="Center" HorizontalAlignment="Center" HintText="Drop activities here">
<sap:WorkflowItemsPresenter.SpacerTemplate>
<DataTemplate>
<Label HorizontalAlignment="Center" Height="21"/>
</DataTemplate>
</sap:WorkflowItemsPresenter.SpacerTemplate>
</sap:WorkflowItemsPresenter>
加载设计器时,绑定工作得很好。现在,当设计器上的某些过滤器更新时,我想清除并将新项目添加到此集合中。因此,在此过滤器属性的 set 访问器中,我调用了一个执行以下操作的方法:
private void RefreshApplication()
{
Activities.Clear();
Activities.Add(new AddXYZApplication() { ApplicationName = "Test" });
}
尽管集合得到更新,但设计器不会刷新。我知道有一种方法可以通过编写一些设计器代码隐藏(即通过模型项树更新集合)来做到这一点,但我理想情况下希望没有代码隐藏并期望它像任何其他 WPF 应用程序一样工作。任何帮助将不胜感激,因为我从现在开始一直在尝试设计一种方法(使用多重绑定,使用事件等)。
切里奥,V