首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF Adorner可见性数据以编程方式绑定

WPF Adorner可见性数据以编程方式绑定
EN

Stack Overflow用户
提问于 2009-11-21 02:29:07
回答 1查看 2.4K关注 0票数 1

我正在创建一个加载装饰器,上面有一个旋转的图标。我尝试直接在XAML中绑定可见性属性,但这实际上隐藏了层次结构中的所有内容。

我的XAML中有以下内容:

代码语言:javascript
复制
<AdornerDecorator Visibility="{Binding Path=RootGroup.Loading, Converter={StaticResource VisibilityConverter}}">
    <TreeView x:Name="groupTreeView" />
</AdornerDecorator>

在我的构造函数中

代码语言:javascript
复制
LoadingAdorner adorner = new LoadingAdorner(groupTreeView);
AdornerLayer.GetAdornerLayer(groupTreeView).Add(adorner);

这不是我想要的,所以我尝试在代码中绑定它:

代码语言:javascript
复制
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);

如果DataContext不是null,这将起作用,因为它实际上可以找到RootGroup.Loading。但是如果它是空的,那么绑定就没有源可以查看了。

所以我想知道XAML数据绑定使用什么作为它的.Source?XAML中的绑定直接绑定到正确的属性,但不能达到同样的效果。所以我想知道,为了绑定到RootGroup.Loading,我应该将我的.Source设置为什么?

谢谢,劳尔

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-11-21 06:20:19

这并没有直接回答你的问题,但是为什么你要使用装饰器来获得加载动画效果。

为什么不使用一个边框元素,它是你的TreeView的兄弟元素,在上面Z排序,然后在里面做你的动画。

所以你做这样的事情

代码语言:javascript
复制
<Grid>    
  <TreeView />
  <Border x:Name="myBorder">... </Border>      
</Grid>

然后,您可以在XAML中执行所有绑定,而无需隐藏整个Visual Tree。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1772394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档