2009-08-10 9 views
10

Czy istnieje sposób użycia wiązania danych do pokazywania lub ukrywania akapitu w pliku przepływu? (Chcę używać MVVM, ale z FlowDocument jako mój widok.)Jak mogę ukryć akapit w pliku FlowDocument?

Akapit nie ma właściwości Widoczność. Nie jestem pewien, czego jeszcze szukać.

Odpowiedz

0

Opcje można myślę ...

  1. Ukryj treść ustępu (nie obejmują akapit w modelu)
  2. Extend punkcie (lub jedną z jej klas bazowych) i zapewniają właściwość zależność dla IsVisible
+2

Jeśli akapit nie zawiera treści, to nadal zajmuje całą pionową spację o pełnej linii, której wolałbym uniknąć. Co do dodawania właściwości IsVisible, w jaki sposób byłoby to realizowane? –

2

miałem dokładnie ten sam problem i to z powodzeniem obsługiwane przez owinięcie zawartości ListItem w InlineUIContainer, tak:

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

Stąd możesz ustawić widoczność "HideMe" w kodzie lub przez wiązanie.

2

Próbowałem odpowiedź Chris Bova, ale miał kilka problemów:

  1. Zaznaczanie tekstu nie działają prawo
  2. Tekst wewnątrz nie płynąć jak ust

My rozwiązaniem było dodanie i usunięcie akapitu z dokumentu przepływu.

Kroki są:

  1. Nazwa dokumentu przepływu (tj FlowDocument)
  2. Nazwa przedmiot przed akapicie chcesz ukryć (tj previousBlock)
  3. Nazwa akapit chcesz ukryć (tj hideParagraph)

Następnie:

 if (<hide paragraph>) 
     { 
      if (previousBlock.NextBlock == hideParagraph) 
      { 
       flowDocument.Blocks.Remove(hideParagraph); 
      } 
     } 
     else 
     { 
      if (previousBlock.NextBlock != hideParagraph) 
      { 
       flowDocument.Blocks.InsertAfter(previousBlock, hideParagraph); 
      } 
     }