その上に渦巻くアイコンを持つ Loading Adorner を作成しています。XAML で可視性プロパティを直接バインドしようとしましたが、実際にはその階層内のすべてが隠されています。
XAMLにこれがあります:
<AdornerDecorator Visibility="{Binding Path=RootGroup.Loading, Converter={StaticResource VisibilityConverter}}">
<TreeView x:Name="groupTreeView" />
</AdornerDecorator>
そしてこれは私のコンストラクターで
LoadingAdorner adorner = new LoadingAdorner(groupTreeView);
AdornerLayer.GetAdornerLayer(groupTreeView).Add(adorner);
これは私が望んでいたことではないので、代わりにコードにバインドしてみました:
LoadingAdorner adorner = new LoadingAdorner(groupTreeView);
Binding bind = new Binding("RootGroup.Loading");
bind.Source = this.DataContext;
bind.Converter = new VisibilityConverter();
adorner.SetBinding(LoadingAdorner.VisibilityProperty, bind);
AdornerLayer.GetAdornerLayer(groupTreeView).Add(adorner);
これは、実際に RootGroup.Loading を見つけることができるため、DataContext が null でない場合に機能します。ただし、null の場合、バインディングには参照するソースがありません。
だから私は、XAML データバインディングがその .Source として何を使用するのか疑問に思っていましたか? XAML で直接バインドすると、正しいプロパティにバインドされますが、同じ結果にはなりません。.Source を何に設定すればよいのか疑問に思っているので、 RootGroup.Loading にバインドできますか?
ありがとう、ラウル