2012-05-03 10 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

おそらく、Value = "{x:Null}"を意味します。 – LPL

+0

ええ、私はそれが隠された棒を得るように見えない、また{X:Null}を試みた。ピートに感謝します。 – PeterP

+1

場合によっては、CollapsedをデフォルトのVisibilityとして使用し、somevalue ==何かのときにVisibilityをVisibleに設定して、切り替えました。 – Eirik

関連する問題