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

編集:申し訳ありません...私は上部のコメントを逃しました。問題を解決するときは、スレッドを閉じたものとしてマークしてください。そうすれば、私のようなばかげた人が無駄な答えを投稿しないようになります。

もちろん!実際、考慮すべきいくつかのオプションがあります。

オプション1:リストが空の場合は、いつでもコントロールの表示を「折りたたみ」に変更できます。これにより、アプリケーションがxamlでコントロールをレンダリングできなくなります。これは、C#コードまたはxamlから実行できます。これは実行可能な解決策ですが、リストビューの場所に依存する他のコントロールがないことに注意してください。可視性を「折りたたみ」に設定すると、applicaitonPageにリストビューをまったくレンダリングしないように指示され、混乱する可能性があります。あなたのレイアウトで。

オプション2:iEnumerableに「IsEmpty」属性を設定してから、その属性をテキストブロックのテキストプロパティにバインドできます。この方法で行う場合は、IEnumerableの値に応じて、空白の文字列または適切にフォーマットされた文字列のいずれかを返すことができるコンバータが必要になります。このオプションは少し複雑ですが、他のコントロールが移動しないように、リストビューをそのままにしておくという利点があります。

これらのオプションのいずれかについてサポートが必要な場合、または明確化が必要な場合はお知らせください:)

于 2012-12-07T15:01:58.473 に答える
0

wpfで使用しているバックエンド言語は何ですか?私はそれがc#かVB.NETのどちらかであるとかなり確信しています。私は専門家ではありませんが、コードからListViewsなどにアクセスできると確信しています。

于 2012-12-04T22:08:24.253 に答える