所以我在Grid
中有多个 StackPanel
元素。 Grid
元素的TextBlock
元素为子级。
我想要做的是设置Style
,将Visibility
属性更改为Collapsed
,如果 TextBlock
' s Text
属性为" 0 "。
到目前为止,我实现了TextBlock
崩溃,但没有实现整体 Grid
;代码如下:
<StackPanel Grid.Column="1">
<StackPanel.Resources>
<Style>
<Style.Triggers>
<Trigger Property="Text" Value="0">
<Setter Property="Visibility" Value="Collapsed"/>
</Trigger>
</Style.Triggers>
</Style>
</StackPanel.Resources>
<Grid Margin="5,0,5,5" >
<TextBlock Text="If this value is 0, I want the whole parent grid to Collapse." Padding="5"/>
</Grid>
<Grid Margin="5,0,5,5" >
<TextBlock Text="Thank you StackOverflow!" Padding="5"/>
</Grid>
</StackPanel>
答案 0 :(得分:1)
要通过样式执行此操作,您可以使用元素名称。 E.g:
<StackPanel Grid.Column="1">
<StackPanel.Style>
<Style TargetType="StackPanel">
<Style.Triggers>
<!-- Here is how we bind to another control's property -->
<DataTrigger Binding="{Binding Content, ElementName=SomexName}" Value="0">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</StackPanel.Style>
<Grid Margin="5,0,5,5" >
<!-- You need to set this textbloc element name -->
<TextBlock x:Name="SomexName" Text="If this value is 0, I want the whole parent grid to Collapse." Padding="5" />
</Grid>
<Grid Margin="5,0,5,5" >
<TextBlock Text="Thank you StackOverflow!" Padding="5"/>
</Grid>
</StackPanel>
虽然我建议使用MVVM并公开
IsVisible
布尔属性,然后您可以使用布尔值来查看转换器