【问题标题】:Make Entire StackPanel Invisible If TextBlock Is Empty [duplicate]如果 TextBlock 为空,则使整个 StackPanel 不可见 [重复]
【发布时间】:2020-06-19 07:11:32
【问题描述】:

我有一个电话号码列表框。有些有扩展,有些没有。如果扩展为空,我不希望整个 StackPanel 都可见。这是我所拥有的:

        <StackPanel Grid.Column="2" Margin="2,0,0,0" Orientation="Horizontal">
            <TextBlock Text="ext "/>
            <TextBlock Text="{Binding Extension}"/>
        </StackPanel>

我希望在 XAML 中完成这一切。

【问题讨论】:

  • 如果分机,您是否要突出显示堆栈面板。是空白吗?
  • 如果第二个TextBlock的内容是空白的,我希望整个StackPanel不可见。 IOW,我不希望 ext 显示 Extension 是否没有价值。

标签: wpf xaml data-binding


【解决方案1】:

我受到了 ASh 发布的链接的启发。搞定了:

<StackPanel Grid.Column="2" Margin="2,0,0,0" Orientation="Horizontal">
    <StackPanel.Resources>
        <Style TargetType="{x:Type StackPanel}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=extension, Path=Text}" 
                  Value="">
                    <Setter Property="Visibility" Value="Collapsed"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </StackPanel.Resources>
    <TextBlock Text="ext "/>
    <TextBlock Name="extension" Text="{Binding Extension}"/>
</StackPanel>

【讨论】:

  • 不应该是 StackPanel 本身的 Style 吗?
  • &lt;StackPanel.Resources&gt; -> &lt;StackPanel.Style&gt;
  • ASh,我对此很陌生。你能给我更多的细节吗?谢谢。
猜你喜欢
  • 2016-10-22
  • 2014-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-30
  • 1970-01-01
  • 2023-03-28
  • 2017-03-21
相关资源
最近更新 更多