2012-05-03 2 views
1

현재 막대 그래프로 표시되는 LinearGradientBrush이 있습니다. 문제는 내 프로그램 (아직 데이터 바인딩에서 값 없음)의 시작에 있습니다. GradientBrush에는 아직 값이 없기 때문에 화면 전체에 흰색 막대가 나타납니다. 기본값으로 표시합니다.시작시 컨트롤 보이지 않음 (값 없음)/DataTemplate 내부의 액세스 컨트롤

정확히 데이터 바인딩 된 값을 얻을 때까지 아무 것도 표시되지 않도록합니다.

만드는 방법 보이지 않는 값을 얻을 때까지? DataTemplate과 그 사용되는 itemsControl

코드 : 바인딩 데이터가 될 때까지 막대를 숨길 수

<ItemsControl x:Name="icGrafiek" 
       Margin="0,0,0,0" 
       ItemsSource="{Binding Source={StaticResource Grafiek}}" 
       ItemTemplate="{DynamicResource GrafiekItemTemplate}" 
       RenderTransformOrigin="1,0.5" Grid.RowSpan="6" Grid.Column="1" 

<DataTemplate x:Key="GrafiekItemTemplate"> 
      <Grid> 
       <Border Height="30" Margin="15" Grid.RowSpan="6"> 
        <Border.Background> 
         <LinearGradientBrush StartPoint="0.0,0" EndPoint="1.0,0"> 
          <GradientStopCollection>        
           <GradientStop Offset="0.0" Color="{Binding FillBar, UpdateSourceTrigger=PropertyChanged}" /> 
           <GradientStop Offset="{Binding Value, UpdateSourceTrigger=PropertyChanged}" 
               Color="{Binding FillBar, UpdateSourceTrigger=PropertyChanged}"/> 

           <GradientStop Offset="{Binding Value, UpdateSourceTrigger=PropertyChanged}" 
               Color="Transparent"/> 
           <GradientStop Offset="1" Color="Transparent" /> 
          </GradientStopCollection> 
         </LinearGradientBrush> 
        </Border.Background> 
       </Border> 
      </Grid> 
     </DataTemplate> 

답변

2

한 가지 방법은 어떤 값에 따라 표시 여부를 설정하는 트리거를 사용하는 것입니다. 당신의 DataTemplate에

:

<DataTemplate x:Key="GrafiekItemTemplate"> 
    <Grid x:Name="grid"> 
    ... 
    </Grid> 
    <DataTemplate.Triggers> 
     <DataTrigger Binding="{Binding Path=Value}" Value="{x:Null}"> 
      <Setter TargetName="grid" Property="Visibility" Value="Collapsed" /> 
     </DataTrigger> 
    </DataTemplate.Triggers> 

당신은 DataTrigger의 바인딩 경로 "값"이 아닌 다른 값을 사용 할 수 있습니다, 그러나 이것은 당신이 시작하는 것이다.

+1

아마도 값 = "{x : Null}"을 의미합니다. – LPL

+0

흠 나는 숨겨진 막대를 얻지 못했고 {X : Null}도 시도했습니다. Pete에게 감사드립니다. – PeterP

+1

경우에 따라 기본 가시성으로 Collapsed를 사용하고 somevalue == something 일 때 Visibility를 Visible로 설정하여 전환했습니다. – Eirik

관련 문제