1

WPF の Adorner に問題があります。私の装飾者は大丈夫ですが、私が望む瞬間に表示されません。

私は次のようなことをするのが好きです:

    public void MyAction()
    {
        // property bound to the adorner VisibiltyProperty
        // I like the happen a refresh now
        // (code is wired correct, if I finish method here, the adorner is drawn)
        this.IsAdornerEnabled = true;

        try
        {
           ... doing some long lasting things I cannot do async cause it depends on a lot of objects owned by main thread...
        }
        finally
        {
            // I like the adorner to be removed from UI now
            this.IsAdornerEnabled = false;
        }
    }

IsAdornerEnabled プロパティは装飾に正しくバインドされ、通知を行います。しかし、このコードでは、メソッドが終了する瞬間に装飾がペイントされ、削除されます。

UI がスレッドでブロックされる前にレンダリングするにはどうすればよいですか?

どんな助けでも大歓迎です。

説明: アドナーを使用して、メイン タブ上に「モジュールの読み込み中」などのテキストが表示された、クリックできない半透明のペインを作成するのが好きです。MainThread が magellan でナビゲートし、castle で依存関係を解決し、多数の DevExpress コントロールを作成している間、このペインを表示したいと思います。それから私は再びそれを削除します。装飾者を作成できます。問題ありません。装飾者は私のプロトタイピング プロジェクトで働いており、そこでは他に何もしていません。

4

2 に答える 2

0

これを試して。

    public void MyAction()
{
    // property bound to the adorner VisibiltyProperty
    // I like the happen a refresh now
    // (code is wired correct, if I finish method here, the adorner is drawn)
    this.IsAdornerEnabled = true;

    try
    {
        this.Dispatcher.Invoke( (Action)(() => 
        { 
            // Do your work here,





            this.IsAdornerEnabled = false;
        })); 
    }catch {
    }

}
于 2013-07-18T14:54:07.617 に答える