在 WPF 中动态更改网格的可见性
Posted
技术标签:
【中文标题】在 WPF 中动态更改网格的可见性【英文标题】:Dynamically change the Visibility of a Grid in WPF 【发布时间】:2014-04-07 09:35:50 【问题描述】:我有一个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
可能是 Null 或 Empty 有时我需要隐藏整个 Grid
。
如何做到这一点?
【问题讨论】:
【参考方案1】:在TextBlock
上设置x:Name
。然后在 Grid 的样式上应用 dataTriggers
以在 TextBlock 上将 Text
设置为 null 或空字符串时折叠可见性。
<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>
【讨论】:
你的意思是我只需要在我的xml文件中添加这个? 将x:Name
提供给您的 textBlock,就像我在上面的示例中所做的那样。还要确保添加 sys
命名空间并在 Grid 标记下应用样式。
对不起,我没明白你在说什么,你能告诉我如何处理我的代码吗?
我已经更新了答案。用上面发布的替换您的 xaml。
它说触发器无法识别或无法访问,我正在使用 Windows phone 8 应用程序【参考方案2】:
在后面的代码中试试这个
if(string.IsNullOrEmpty(myObject.Title))
GridLayout.Visibility = Visibility.Collapsed;
Title.Text=string.Empty;
else
Title.Text = myObject.Title;
GridLayout.Visibility = Visibility.Visible;
【讨论】:
谢谢我做到了,我需要你的帮助请看这里***.com/questions/22191160/…【参考方案3】:以上答案可能适用于 Windows Phone 7
我自己解决了。
这就是我的做法。
在 Xaml 中使网格项的可见性默认折叠,现在在代码中检查 myObject.Title 是否为空。如果不为 null,则将网格可见性设置为可见。
【讨论】:
我在 xml 解析方面需要帮助你能帮帮我吗?以上是关于在 WPF 中动态更改网格的可见性的主要内容,如果未能解决你的问题,请参考以下文章