我有一个Grid
,其中包含TextBlock
:
<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
。
如何实现这一目标?
答案 0 :(得分:4)
在x:Name
上设置TextBlock
。然后在Grid的样式上应用dataTriggers
,以便在Text
设置为null或TextBlock上为空字符串时折叠可见性。
<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>
答案 1 :(得分:1)
在
后面的代码中试试这个if(string.IsNullOrEmpty(myObject.Title))
{
GridLayout.Visibility = Visibility.Collapsed;
Title.Text=string.Empty;
}
else
{
Title.Text = myObject.Title;
GridLayout.Visibility = Visibility.Visible;
}
答案 2 :(得分:0)
上面的答案可能适用于Windows Phone 7
我自己解决了。
这是我的表现。
在Xaml中,默认情况下使网格项的可见性折叠,现在在代码中检查myObject.Title是否为null。如果不为null,则将grid visibilty设置为visible。