我有一个StackPanel
,其中包含带有标题的TextBox
和带有项目的ItemsControl
。如果提供项目的列表为空,我想隐藏整个StackPanel。
我没有尝试为绑定(bind)编写专用的Converter,而是想尝试QuickConverter(https://quickconverter.codeplex.com/)。 QuickConverter允许在绑定(bind)中使用内联C#表达式。
这是我的标记:
<StackPanel Visibility="{qc:Binding '$P > 0 ? Visibility.Visible : Visibility.Collapsed', P={Binding Path=Value.Count}}"> <!-- this does not work. It's always shown, regardless of the element count -->
<TextBlock Text="{qc:Binding '$P', P={Binding Path=Value.Count}}"></TextBlock> <!-- for debugging purposes only. It correctly shows the element count for the list -->
<TextBlock Text="{qc:Binding '$P.Count', P={Binding Path=Value}}"></TextBlock> <!-- for debugging purposes only. It should do the same as the line above, but it does nothing -->
...
<ItemsControl ItemsSource="{Binding Path=Value}">
...
</ItemsControl>
</StackPanel>
第一个文本块显示预期的结果,所有其他QuickConverter表达式均无法正常工作。在设计时和运行时都没有错误或异常。
谢谢您的任何想法。
克里斯。
最佳答案
您可能在DataTrigger
中有一个Style
,如下所示:
<StackPanel>
<StackPanel.Style>
<Style TargetType="StackPanel">
<Style.Triggers>
<DataTrigger Binding="{Binding Value.Count}" Value="0">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</StackPanel.Style>
...
</StackPanel>
关于c# - WPF QuickConverter : Hide element on empty list,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36999659/