C# 启动时使控件不可见(无值)/数据模板内的访问控件

C# 启动时使控件不可见(无值)/数据模板内的访问控件,c#,.net,wpf,xaml,binding,C#,.net,Wpf,Xaml,Binding,目前我有一个LinearGradientBrush显示为条形图。问题是在启动我的程序时(还没有数据绑定中的值),我的屏幕上出现了白色条,因为GradientBrush还没有值,并将其显示为默认值 我如何确切地确保在它实际获得数据绑定值之前不会显示任何内容 如何使此不可见,直到它获得值 DataTemplate及其使用的itemsControl的代码: <ItemsControl x:Name="icGrafiek" Margin="0,0,0,0"

目前我有一个
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>

隐藏条形图直到数据绑定的一种方法是使用触发器根据某个值设置可见性

在数据模板中:

<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”不同的值,但这应该可以让您开始使用。

您可能是指value=“{x:Null}”。嗯,我似乎无法将其隐藏,还尝试了{x:Null}。关于Pete。在某些情况下,我会将其切换,使用Collapsed作为默认可见性,然后在somevalue==something时将可见性设置为Visible。例如,不可能访问GradientLinearBrush并将不透明度设置为0吗?您是否尝试将NaN作为值而不是{x:Null}?您可以将double声明为“double?ValueBar;”,从而使其可为null。您应该能够以与数据模板中的网格相同的方式访问GradientLinearBrush。