C# 动态更改WPF中栅格的可见性
我有一个带有文本块的网格: 现在这里myObject.Title可能为Null或空,有时我需要隐藏整个网格 如何实现此目的?在文本块上设置x:Name。然后,当文本在TextBlock上设置为null或空字符串时,在网格样式上应用dataTriggers以折叠可见性C# 动态更改WPF中栅格的可见性,c#,wpf,silverlight,windows-phone-8,visibility,C#,Wpf,Silverlight,Windows Phone 8,Visibility,我有一个带有文本块的网格: 现在这里myObject.Title可能为Null或空,有时我需要隐藏整个网格 如何实现此目的?在文本块上设置x:Name。然后,当文本在TextBlock上设置为null或空字符串时,在网格样式上应用dataTriggers以折叠可见性 <Grid xmlns:sys="clr-namespace:System;assembly=mscorlib" x:Name="GridLayout" Margin="4,0,4,1" Grid.
<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>
在TextBlock上设置x:Name。然后,当文本在TextBlock上设置为null或空字符串时,在网格样式上应用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>
以上答案是否适用于Windows Phone 7 我自己解决了 我是这样做的
在Xaml中,默认情况下使网格项的可见性折叠,现在在代码中检查myObject.Title是否为null。如果不为空,则将网格可见性设置为可见。以上答案是否适用于Windows Phone 7 我自己解决了 我是这样做的
在Xaml中,默认情况下使网格项的可见性折叠,现在在代码中检查myObject.Title是否为null。如果不为空,则将网格可见性设置为可见。在代码隐藏中尝试此操作
if(string.IsNullOrEmpty(myObject.Title))
{
GridLayout.Visibility = Visibility.Collapsed;
Title.Text=string.Empty;
}
else
{
Title.Text = myObject.Title;
GridLayout.Visibility = Visibility.Visible;
}
试试这个,在代码隐藏中
if(string.IsNullOrEmpty(myObject.Title))
{
GridLayout.Visibility = Visibility.Collapsed;
Title.Text=string.Empty;
}
else
{
Title.Text = myObject.Title;
GridLayout.Visibility = Visibility.Visible;
}
你是说我只需要在我的xml文件中添加这个吗?像我在上面的示例中所做的那样,给你的文本块指定x:Name。另外,请确保在网格标记下添加sys名称空间和应用样式。对不起,我没有理解您的意思。您能告诉我如何处理我的代码吗?我已经更新了答案。用上面发布的xaml替换您的xaml。它说触发器无法识别或访问,我正在使用Windows phone 8应用程序。您的意思是我只需要将其添加到我的xml文件中吗?像上面的示例一样,为您的文本块指定x:名称。另外,请确保在网格标记下添加sys名称空间和应用样式。对不起,我没有理解您的意思。您能告诉我如何处理我的代码吗?我已经更新了答案。用上面发布的xaml替换你的xaml。它说触发器无法识别或访问,我正在使用Windows phone 8应用程序我需要xml解析方面的帮助你能帮我吗?我需要xml解析方面的帮助你能帮我吗?谢谢我做到了,我需要你的帮助请看这里谢谢我做到了,我需要你的帮助请看这里