2016-04-08 6 views
0

Ich versuche, Multiline-Zeile bei ListBox zu machen.Wie erstellt man mehrzeiligen Text bei ListBox (TextBox Element)?

So las ich this question und dieses XAML machen:

<ListBox Grid.Row="1" x:Name="lbKeyPhrases" BorderBrush="Gray" 
     ItemsSource="{Binding Templates}"           
     IsSynchronizedWithCurrentItem="True" 
     Focusable="True"                 
     ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
     ScrollViewer.VerticalScrollBarVisibility="Auto" 
     HorizontalContentAlignment="Stretch" Grid.ColumnSpan="2"           
     > 
    <ListBox.ContextMenu> 
     <ContextMenu> 
      <MenuItem Header="Add Word" Click="MenuItem_Click"> 
       <Image Source="/SomeProj.UI.Resources;component/PNGImages/ItemAdd.png"/> 
      </MenuItem> 
     </ContextMenu> 
    </ListBox.ContextMenu> 

    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <DockPanel> 
       <Border x:Name="brRow" BorderThickness="1" BorderBrush="LightGray" 
         Background="WhiteSmoke" 
         HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
        <TextBox x:Name="tblbRow" 
          Text="{Binding Text,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
          Tag="{Binding}" 
          GotFocus="tblbRow_GotFocus" 
          AcceptsReturn="True"          
          TextWrapping="Wrap" Margin="2" 
          Focusable="True" 
          Background="Transparent" 
          HorizontalAlignment="Stretch" 
          ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
          > 
         <TextBox.ContextMenu> 
          <ContextMenu> 
           <MenuItem Header="Remove Word" 
              Click="MenuItem_Click_RemoveTemplate"> 
            <Image Source="/SomeProj.UI.Resources;component/PNGImages/ItemDel.png"/> 
           </MenuItem> 
          </ContextMenu> 
         </TextBox.ContextMenu> 
        </TextBox> 
       </Border> 
      </DockPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

aber ist scheint, dass nicht für mich arbeiten. Ich benutze TextBox statt TextBlock, weil ich Zeile bearbeiten muss. Also, ich möchte, wenn Textzeile sehr groß sein wird - es umschließt zu multitile.

Und Scroll nicht diposed (aber sollte sein).

Können Sie mir sagen, wie das geht?

P.S. Es scheint, dass Scroll nicht entsorgt wird, weil es von einem anderen Grid stammt.

+0

Ihr XAML scheint ordnungsgemäß zu funktionieren ... Sind Sie sicher, dass es nicht noch etwas anderes (z. B. einen Stil) gibt, das Ihre 'TextBox' nicht umbrechen lässt? –

+0

@IlVic, im oberen Raster, ScrollViewer.HorizontalScrollBarVisibility = "Automatisch", ScrollViewer.CanContentScroll = "True" –

+1

Wird eine horizontale Bildlaufleiste angezeigt, wenn sie lang genug ist, dass sie umbrochen werden soll? (Ignorier mich, habe bemerkt, dass du ScrollViewer.HorizontalScrollBarVisibility = "Disabled" hast) – Joe

Antwort

1

Wie gewünscht, mein Kommentar als Antwort:

Erscheint eine horizontale Bildlaufleiste, wenn es bekommt lange genug, dass es Einwickeln werden sollte? Das Wrapping tritt nicht auf, da der Inhalt im ScrollViewer beliebig skaliert werden kann. Das Umhüllen kommt der Steuerung, die den gesamten horizontalen Raum füllt, untergeordnet zu, so dass es durch das Scrollen einen unendlichen Raum einnehmen kann.

Rahmen:

ScrollViewer.HorizontalScrollBarVisibility="Disabled" 

in der Steuerung mit Ihrer Textbox (ListBox) sollte dieses Verhalten verhindern.

0

@Joe hatte Recht: obere Gitter haben ScrollView.HorizontalBarVisible:Auto, also ändere ich es zu Disable und es funktioniert!

+0

Großartig, ich muss total falsch gelesen haben, weil ich dachte, ich hätte überprüft und sah Sie ScrollViewer.HorizontalScrollBarVisibility = "Disabled ". Froh, dass ich den Kommentar trotzdem gemacht habe! – Joe

+0

@Joe, du kannst deine eigene Antwort schreiben und ich mache es als richtige Antwort, weil dein Rat mir hilft. –

+0

sicher, danke für das Angebot! – Joe

Verwandte Themen