私は非常に奇妙な問題を抱えているので、デバッグするのが非常に難しいので、もう一度SOコミュニティに向かいます。 :-)コントロールを追加すると、Silverlightがハングする
まず私のセットアップ(私はちょうどので、私の全体の前提が間違っているかもしれない、実行して学習、シルバーに新たなんだ注意!)上のビット:私はいくつかのルートノードを持つ
(フォーム)その下にいくつかの葉(質問)があります。 現在、どのフォームが現在選択されているかに応じて、質問を表示/非表示にするだけです(かなり簡単です)。コントロールの数がLayoutControl(私はDeveloperExpressコンポーネントを使用しています)あなたが別のフォームを選択すると
- :
私は、次の操作を行います
これは機能します。
私に1またはコントロールがある場合。
これ以上のものがあれば、すべてがいつものように追加され、例外はスローされませんが、Silverlightは明らかに無限ループを起こします。 IEやChromeで実行しても、ブラウザがクラッシュするだけです! (または、私は、ブラウザのプラグインと思います)。
私はこの間にデバッガを一時停止して問題の位置を確認しようとしましたが、「外部コード」で停止しています。 コードサンプルはあまりうまくいかないと思いますが、要素を保存して読み込む2つの方法があります。(注:AddControlは私が定義したメソッドです。要素を別のコントロールにラップして機能。同様に.MyChildrenは、私もこれをデバッグについて行くにはどうすればよい
private void LoadElementsFromCurrentForm()
{
foreach (var child in _currentForm.Elements)
{
layoutControl1.AddControl(child);
}
}
private void SetElementsOnCurrentForm()
{
_currentForm.Elements.Clear();
foreach (var child in layoutControl1.MyChildren)
{
_currentForm.Elements.Add(child);
}
}
).Removeを使用してラッパーからコントロールを削除()し、それを返します! 重要かどうかは分かりませんが、これらのコントロールには一意の名前が付いています。
セーレン
ありがとうございます。残念ながら、私は単に観察可能なコレクションにバインドすることはできません。コントロールは、私がアクセスできないコンテナに配置され、コントロールのドラッグ・ドロップによる並べ替えを可能にします。これは保持する必要があります。しかし、あなたのヒントに感謝します - 私はMVVMを調べます。 – Fafnr