2009-11-20 3 views
1

위에 소용돌이 모양의 아이콘이있는 Loading Adorner를 만들고 있습니다. XAML에서 직접 가시성 속성을 바인딩하려고 시도했지만 실제로는 계층 구조 안의 모든 것을 숨 깁니다.WPF Adorner 공개 설정 데이터 프로그래밍 방식으로 바인딩

내 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); 

DataContext가 실제로 RootGroup.Loading을 찾을 수 있기 때문에 null이 아닌 경우이 방법이 작동합니다. 그러나 그것이 널이면 바인딩에 볼 소스가 없습니다.

그래서 나는 XAML 데이터 바인딩을 .Source로 사용하는 것이 궁금합니다. XAML에서 직접 바인딩하면 올바른 속성에 바인딩되지만 동일한 결과는 얻을 수 없습니다. 그래서 나는 내가 .Source를 어떻게 설정해야하는지 궁금해서 RootGroup에 바인딩 할 수 있습니다.로드?

덕분에, 라울

답변

2

이 직접 귀하의 질문에 대답하지 않지만, 당신은 왜 로딩 애니메이션 효과를 얻기 위해 adorner을 사용하고 있습니다.

왜 Top-top 위에있는 TreeView의 형제 인 테두리 요소를 사용하고 그 안에 애니메이션을 만드십시오.

그래서 당신은이

<Grid>  
    <TreeView /> 
    <Border x:Name="myBorder">... </Border>  
</Grid> 

같은 그런 다음 당신은 전체 시각적 트리를 숨기지 않고 모든 XAML에서 바인딩을 할 수 않습니다.

+0

글쎄, 당신이 직접 질문에 대답하지 않는다고 ...하지만 내가 한 일이 당신의 접근 방식이 더 좋을 때. 감사합니다. – HaxElit