当内容为空时,如何禁止显示ListView

时间:2012-12-04 22:03:02

标签: wpf xaml listview

我有一个对象,其中包含一个名为ValidPhones的IEnumerable作为属性。当我将它绑定到WPF ListView时:

<ListView DataContext="{Binding ValidPhones}">
  <TextBlock>
    <TextBlock.Text>
      <MultiBinding StringFormat='{}{0}: {1}'>
        <Binding Path='Type' />
        <Binding Path='PhoneNumber' />
      </MultiBinding>
    </TextBlock.Text>
  </TextBlock>
</ListView>

即使Enumerable为空,它仍然会在UI中显示“:”。有没有一种简单的方法可以抑制这种情况的发生?

2 个答案:

答案 0 :(得分:0)

你使用wpf的后端语言是什么?我很确定它是c#还是VB.NET。我不是专家,但我很确定你可以从代码中访问像ListView这样的东西。

答案 1 :(得分:0)

编辑:抱歉......我错过了评论。当你解决问题时请将你的主题标记为已关闭,这样愚蠢的人就像我一样不会发布无用的答案。

当然!事实上,您可以考虑几种选择。

选项1:当列表为空时,您始终可以将控件的可见性更改为“折叠”,这将使您的应用程序无法在xaml中呈现它。这可以通过C#代码或xaml完成。这是一个可行的解决方案,但请注意,您没有其他依赖于列表视图位置的控件,因为将可见性设置为“折叠”将告诉您的应用程序页面根本不会呈现列表视图,这可能会导致混乱你的布局。

选项2:您可以为iEnumerable设置“IsEmpty”属性,然后将该属性绑定到textblock的text属性。如果你这样做,那么你将需要一个转换器,它可以返回一个空字符串或正确格式化的字符串,具体取决于IEnumerable的值。这种opiton稍微复杂一点,但它的好处是只保留listview,以便其他控件不会移动。

如果您需要有关这些选项的帮助,或者如果需要澄清,请告知我们。)