[英]Dynamically change the Visibility of a Grid in WPF
我有一個帶有TextBlock
的Grid
:
<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
有時可能為Null或為空,有時我需要隱藏整個Grid
。
如何做到這一點?
在TextBlock
上設置x:Name
。 然后在TextBlock上將Text
設置為null或空字符串時,對Grid的樣式應用dataTriggers
折疊可見性。
<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是否為null。 如果不為null,則將網格可見性設置為可見。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.