2012-05-03 50 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作爲默認可見性,然後在somevalue ==某事時將可見性設置爲可見。 – Eirik