デザイナーを再ホストしていて、複数の子アクティビティアイテムをレンダリングするための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アプリケーションと同じように機能することを期待しています。私はいつかから(マルチバインディングを使用したり、イベントを使用したりするなど)方法を考案しようとしてきたので、どんな助けでも大歓迎です。
Cheerio、V