在DataTemplate中启动(无值)/访问控制时使控件不可见

时间:2012-05-03 09:55:59

标签: c# .net wpf xaml binding

目前我有LinearGradientBrush显示为条形图。问题出在我的程序启动时(没有来自数据绑定的值)我在整个屏幕上都有白条,因为GradientBrush还没有值,并将其显示为默认值。

在确实获得数据绑定值之前,我究竟如何确保没有任何显示。

如何使隐身直到获得值?

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>

1 个答案:

答案 0 :(得分: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中的绑定路径,您可能必须使用与“Value”不同的值,但这应该可以帮助您入门。