12

データバインディングを使用して FlowDocument 内の段落を表示または非表示にする方法はありますか? (MVVM を使用したいのですが、ビューとして FlowDocument を使用します。)

段落には Visibility プロパティがありません。他に何を探すべきかわかりません。

4

4 に答える 4

3

私はまったく同じ問題を抱えていて、次のようにListItemのコンテンツをInlineUIContainerでラップすることで正常に処理しました。

  <ListItem>
    <Paragraph>
      <InlineUIContainer>
        <TextBlock x:Name="HideMe" Visibility="Collapsed">
          <Hyperlink NavigateUri="...">Components</Hyperlink>
        </TextBlock>
      </InlineUIContainer>
    </Paragraph>
  </ListItem>

ここから、コードまたはバインディングを介して「HideMe」の可視性を設定できます。

于 2009-11-05T14:23:24.620 に答える
3

Chris Bova の回答を試しましたが、いくつか問題がありました。

  1. テキストの選択が正しく機能しませんでした
  2. 中のテキストが段落のように流れなかった

私の解決策は、フロー ドキュメントから段落を追加および削除することでした。

手順は次のとおりです。

  1. フロー ドキュメントに名前を付けます (つまり、flowDocument)
  2. 非表示にする段落の前の項目に名前を付けます (つまり、previousBlock)
  3. 非表示にする段落に名前を付けます (つまり、hideParagraph)

それで:

        if (<hide paragraph>)
        {
            if (previousBlock.NextBlock == hideParagraph)
            {
                flowDocument.Blocks.Remove(hideParagraph);
            }
        }
        else
        {
            if (previousBlock.NextBlock != hideParagraph)
            {
                flowDocument.Blocks.InsertAfter(previousBlock, hideParagraph);
            }
        }
于 2013-09-28T18:40:20.850 に答える
0

考えられるオプション...

  1. 段落の内容を非表示にする (モデルに段落を含めないでください)
  2. Paragraph (またはその基本クラスの 1 つ) を拡張し、IsVisible の依存関係プロパティを提供します。
于 2009-08-10T12:48:17.207 に答える