0

私は過去にstackoverflow.comでソリューションを読むのが本当に好きでした。今、私は答えを見つけることができなかった質問があります。どうぞ :-)

コードで2つのサードパーティコンポーネントを使用しています。1つは、ExtendenWPFToolkitのビジーインジケーターです。XAMLを参照してください。

<tool:BusyIndicator IsBusy="{Binding RequirementsModel.Working}" BusyContent="Fetching Data..." >
    <local:RequirementsTree Model="{Binding RequirementsModel}" x:Name="Sample" />
</tool:BusyIndicator>

IsBusyはRequirementsModel.Workingにバインドされています。RequirementsModelは、DataContextに付属するビューモデルの一部です。私のRequirementsModelの抜粋を見てみましょう。

  class RequirementsModel : ITreeModel, INotifyPropertyChanged
  {

        private bool _working;
        public bool Working
        {
            get { return _working; }
            set { _working = value; RaisePropertyChanged("Working"); }
        }



        public bool HasChildren(object parent)
        {
            Working = true;

            /* Data access shall happen here
                Entered dummy code  */

            System.Threading.Thread.Sleep(2000);

            bool value = true;

            Working = false;

            return value;

        }


        public event PropertyChangedEventHandler PropertyChanged;

        public void RaisePropertyChanged(string propertyName)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null)
                handler(this, new PropertyChangedEventArgs(propertyName));
        }

    }

}

ご覧のとおり、プロパティ "Working"が変更され、WPFビューのバインドが機能するはずです。しかし、それは何も起こりません。この状況は、メソッドが終了した後にビューの更新が行われるために発生すると思います。しかし、それまでに作業は誤りです。また、呼び出し元のメソッドでプロパティを設定し、HasChildren()を非同期で呼び出すことができることも知っていますが、これには他のサードパーティコンポーネントの変更が含まれます。それを機能させる方法を知っていますか?

ありがとう1月

4

0 に答える 0