动态更改 WPF 中网格的可见性



我有一个包含TextBlockGrid

<Grid x:Name="GridLayout" Margin="4,0,4,1" Grid.Row="2" Background="#accdd7">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <TextBlock Name="Title" 
               Grid.Row="0"
               HorizontalAlignment="Stretch"
               Padding="10,2,10,2"
               Style="{StaticResource PromptTextStyle}" />
</Grid>

我正在以编程方式设置此TextBlock值:

Title.Text = myObject.Title;

现在这里myObject.Title可能是空或空,有时我需要隐藏整个Grid

如何实现这一点?

TextBlock 上设置x:Name。然后在 TextBlock 上将dataTriggers应用于网格样式以折叠可见性Text以折叠可见性。

    <Grid xmlns:sys="clr-namespace:System;assembly=mscorlib"
          x:Name="GridLayout" Margin="4,0,4,1" Grid.Row="2" Background="#accdd7">
        <Grid.RowDefinitions>
           <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <TextBlock x:Name="Title" 
                   Grid.Row="0"
                   HorizontalAlignment="Stretch"
                   Padding="10,2,10,2"
                   Style="{StaticResource PromptTextStyle}"/>
        <Grid.Style>
            <Style TargetType="Grid">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Text, ElementName=Title}"
                                 Value="{x:Null}">
                        <Setter Property="Visibility" Value="Collapsed"/>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding Text, ElementName=Title}" 
                                 Value="{x:Static sys:String.Empty}">
                        <Setter Property="Visibility" Value="Collapsed"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Grid.Style>
    </Grid>

在代码隐藏中尝试一下

if(string.IsNullOrEmpty(myObject.Title))
{
GridLayout.Visibility = Visibility.Collapsed;
Title.Text=string.Empty;
}
else
{
Title.Text = myObject.Title;
GridLayout.Visibility = Visibility.Visible;
}

上面的答案可能适用于Windows Phone 7

我自己解决了。

这是我的做法。

在 Xaml 中,默认情况下将网格项的可见性设置为折叠,现在在代码中检查 myObject.Title 是否为空。 如果不是空,则将网格可见性设置为可见。

最新更新