私は過去に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月