0

我有一个对象,其中包含一个名为 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 中显示“:”。有没有一种简单的方法来抑制这种情况的发生?

4

2 回答 2

0

您在 wpf 中使用什么后端语言?我相当确定它是 c# 或 VB.NET。我不是专家,但我很确定你可以从代码中访问 ListViews 之类的东西。

于 2012-12-04T22:08:24.253 回答
0

编辑:对不起......我错过了顶部的评论。当您解决问题时,请将您的线程标记为已关闭,这样像我这样愚蠢的人就不会发布无用的答案。

当然!事实上,有几个选项供您考虑。

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

选项 2:您可以为 iEnumerable 设置“IsEmpty”属性,然后将该属性绑定到文本块的文本属性。如果你这样做,那么你将需要一个转换器,它可以根据 IEnumerable 的值返回一个空白字符串或正确格式化的字符串。这个选项稍微复杂一些,但它的好处是让你的列表视图不受影响,这样其他控件就不会四处移动。

请让我知道您是否需要这些选项中的任何一个的帮助,或者他们是否需要澄清:)

于 2012-12-07T15:01:58.473 回答