2014-01-10 2 views
1

Я хочу отображать комбинацию текстовых блоков и текстовых полей с фиксированной шириной. Помните, что это многострочный текст. Какой контроль контейнера я должен использовать для достижения этого. Я попытался использовать StackPanel с фиксированной шириной, но он не работает.WPF: Как отобразить сочетание ввода текстовых блоков и текстовых полей?

Ex:

Некоторый текст бла бла #text окно # снова Некоторый текст бла бла # txtbx # снова некоторый текст # Textbox # текст некоторые текст бла снова некоторый текст # # текстовое поле текст какой-нибудь текст бла

+0

Смотрите, если этот пост поможет - http://stackoverflow.com/a/6696624/442444 – CarbineCoder

ответ

1

Вы можете использовать TextElement, чтобы сделать это как

<TextBlock TextWrapping="Wrap"> 
    <Run Text="I comma " /> 
    <TextBox Width="100" Text="recruit's name" />    
    <Run Text="comma do solemnly swear by " /> 
    <TextBox Width="150" Text="recruit's deity of choice"/>    
    <Run Text=" to uphold the Laws and Ordinances of the City of Ankh-Morpork" /> 
</TextBlock> 

Вам может понадобиться настроить поля TextBoxes перемещают их в соответствии с другим текстом.

+0

К OP: Помните, что содержимое TextBlock смешанно с xml. В этом примере символы новой строки становятся пробелами. – Gusdor

+0

Спасибо :) никогда не знаю, как работать и текстовые комбинации будут работать – Maxcom

0

Вы пробовали WrapPanel? Я думаю, что это лучший контейнер, чтобы делать то, что вы хотите. Вы можете использовать его как StackPanel и в зависимости от его размера и размера, WrapPanel организует предметы, чтобы чувствовать себя горизонтально и вертикально.

Надеется, что это помогает

0

Я хотел бы предложить вам использовать ItemsControls с ItemsContainer в WrapPanel

Bind в ItemsControl с коллекцией в ViewModel, а затем Создайте свой DataTemplate в View

0
<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition/> 
     <ColumnDefinition/> 
     <ColumnDefinition/> 
    </Grid.ColumnDefinitions> 
    <TextBlock Grid.Column="0"/> 
    <TextBox Grid.Column="1"/> 
    <TextBlock Grid.Column="2"/> 
    <TextBox Grid.Column="3"/> 
<Grid/> 

Или

<Grid> 
<Grid.RowDefinitions> 
    <RowDefinition/> 
    <RowDefinition/> 
    <RowDefinition/> 
</Grid.RowDefinitions> 
<TextBlock Grid.Row="0"/> 
<TextBox Grid.Row="1"/> 
<TextBlock Grid.Row="2"/> 
<TextBox Grid.Row="3"/> 
<Grid/> 

or any Combinatio п Вам нужно

Если вам нужны какие-либо специальные с текстовых блоков из TextBoxes вы можете установить ширину, как этот

 <ColumnDefinition Width="50"/> 
1

Вы можете использовать FlowDocument, то есть:

<FlowDocumentReader xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
     <FlowDocument> 
      <Paragraph> 
       <Bold>Some bold text in the paragraph.</Bold> 

       Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eu ipsum vitae sem elementum mollis tempor et neque. 
      </Paragraph> 


      <Paragraph> 
       <TextBox Text="I'm a textbox"></TextBox> 
       <Button Content="Click Me"></Button> 
      </Paragraph> 
        <List> 
       <ListItem> 
        <Paragraph>ListItem 1</Paragraph> 
       </ListItem> 
       <ListItem> 
        <Paragraph>ListItem 2</Paragraph> 
       </ListItem> 
       <ListItem> 
        <Paragraph>ListItem 3</Paragraph> 
       </ListItem> 
      </List> 

     </FlowDocument> 
    </FlowDocumentReader> 

, чтобы получить это: enter image description here

Смежные вопросы